: frac ( fraction -- count comparison ) >fraction [ mod ] keep 2dup / 1/2 <=> [ { { +lt+ [ drop ] } { +gt+ [ swap - ] } { +eq+ [ 2drop 0 ] } } case ] keep ; : distribute ( amount n -- seq ) tuck / [ round '[ _ ] replicate 0 ] keep frac { { +lt+ [ [ 1+ ] ] } { +gt+ [ [ 1- ] ] } { +eq+ [ [ ] ] } } case [ pick ] dip change-each ;