: sma ( seq n -- newseq ) #! Simple moving average 0 swap rot V{ } -roll [ [ length ] keep 2over <= rot drop ] [ [ sum ] 3keep [ [ 1+ ] dip 1+ ] dip roll [ roll ] dip swap [ push ] keep -roll ] [ drop drop drop ] while ;