1) the delay on your timers are going to start at the high end, and work their way down.
Thus the first timer you set won't execute until 60 seconds after it is set.
Additionally, while using named timers is a good idea, you're setting the same timer 3 times. Look at your naming configuration.
2) Your entire loop will probably process before the last timer executes (this would have a delay of 1 second).
3) You have an extra dec %x in the code.
See if this meets your requirements.
alias count {
var %x = 60
while %x {
$+(.timer,[count_,%x,]) 1 1 scan %x
dec -cze %x
}
}
alias -l scan {
echo -s Scan again in ( $+ $1 $+ )
echo -s Scan again
echo -s Scan again (enable id)
}