I am now using CW's module, and it works. Some of the built-in timer numbers seemed to work and some didn't. It's the first time I've ever found AGS to be inconsistent (without it quickly turning out to be my fault). I'm sure this was my fault somehow, but for the life of me I can't find any other script dealing with the relevant timers.
It's hard to guess without seeing a full code around IsTimerExpired and under it. I may imagine following possibilities -
1) You are doing IsTimerExpired for the same timer more than once in various places in code. According to the manual, as soon as you check it once, the "expired" flag is reset, and second check will never return true.
2) There is more code around IsTimerExpired that prevents it to be called in time.
3) IsTimerExpired worked, but there is a mistake in code under condition that prevents wanted actions.
4) There is a code around SetTimer that prevents it from being called with certain arguments.
5) SetTimer or IsTimerExpired does not work for some reason.
6) repeatedly_execute_always does not get called for some reason.
Without seeing the rest of the code, only suggestion that comes to mind right now, is to write log into file, and record when SetTimer gets called, when repeatedly_execute_always got called (maybe output number of times it got called until timer expired), and immediately when timer expires.