use POSIX 'ceil'; use List::Util qw( min max ); my $Base = 15; my $Max = 24; my $Incr = 2000; sub compare { my ( $points, $quota ) = @_; my $new = max( min( $Max, ( ceil( $points/$Incr ) - 1 ) + $Base ), $Base ); return $new > $quota ? $new : $Base; }