Always is so where every single loop (default is 50 loops a second, at max performance), I believe timer based "loops" are more based on the computer time, rather then game loops. So if you have a game running at full speed, every 1 second will be faster then in a game running at a slower frame rate, this is however excluding Machine Independent Speed.
The best way I found to do a timer based engine that doesn't mess up with game is you could do:
Always Add 1 to Counter
Then make it so that it resets back to 0, when it hits a number you want. The bigger the number, the longer the loop (cause it takes longer to get to that number.)
Now you can make it so that every time you want to trigger the loop, just make it: counter = 0.
I don't know if this helps with your problem, but if not, it's something new that you could work with. I find it VERY useful.