for (my $i = 0; $i < 60; $i++) { my $offset = getOffsetToNearestInterval($i,15); print "$i: " . ($i + $offset) . ' (' . $offset . ')' . "\n"; } sub getOffsetToNearestInterval { my $number = shift; my $interval = shift; my $nearest_interval = ( $interval * int( ($number + ($interval/2) ) / $interval) ); my $offset_to_interval = $nearest_interval - $number; return $offset_to_interval; }