[ dup "%d bottles" puts ]
[ "1 bottle" puts ]
[ "no more bottles" puts  ]
create bottles , , ,

: .bottles  dup 2 ^math'min bottles + @ do ;
: .beer     .bottles " of beer" puts ;
: .wall     .beer    " on the wall" puts ;
: .take     "Take one down, pass it around" puts ;
: .verse    .wall cr .beer cr
            1- .take cr .wall cr ;
: ?dup      dup 0; ;
: verses    [ cr .verse dup 0 <> ] while drop ;

99 verses
bye
