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:
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