There is no bug here. Timers send messages to the internal message queue. When the main thread is free to process the message queue it raises the event.
In your program the main thread is mostly occupied with redrawing the text. If you remove the code that updates the label text then it will count to 800+ every second.
For further discussion please start a new thread in the questions forum.