#!/usr/local/bin/tclsh8.6 proc GetNext {in} { set m [lindex $in 0] set n 0 set L [llength $in] for {set i 1} {$i < $L} {incr i} { if {[lindex $in $i] <= $m} {continue} set m [lindex $in $i] set n $i } set d [expr {$m / $L}] set r [expr {$m % $L}] set out $in lset out $n 0 for {set i 0} {$i < $L} {incr i} {lset out $i [expr {[lindex $out $i] + $d}]} for {set i $m} {$r > 0} {incr i} { incr r -1 } return $out } set in {0 2 7 0} puts [GetNext $in]