yepp, but you could bypass this effct by e.g.:
set -u5 $+(%,spam.,$nick,.,$ctime) x
if ($var($+(spam.,$nick,.*),0) > 3) { stuff }

You thereby don't have one var for nick with value "N", but N vars, each with their own "time to expire"

instead of $ctime you could use $ticks or a random number to make it more "accurate", e.g.:
set -u5 $+(%,spam.,$nick,.,$rand(1,9999)) X