The problem with that kind of time script is that if the timer is delayed for 1 second at just the 'wrong' time, the time for that hour will never be exactly HH:00:00 and the commands won't happen. The simplest way to make something happen at a specific time is to use the [time] option in the timer.
Try this code:
on *:START:hourtimer
alias hourtimer {
var %nexthour = $+($calc(($asctime(HH) + 1) % 24),:00)
timerhour -o %nexthour 1 1 hourtimer
;; Perform your commands below this line ;;
}
(untested)
-genius_at_work