That is normal behavior, because the timer isn't checking seconds.

From 00:00 to 00:01, all 60 seconds are 00:00, so it'll trigger that many times

Unfortunately, there's also no way to actually have it check seconds that I know of. I ran into this problem a while ago while I was scripting something, and my solution was to use the second option you suggested: .timer 1 120 .timerputdata 0:00 1 1 putdata.