Do you have any other timers running? You could be experiencing a "beat" between timers.
In my experience the timers are somewhat erratic because the user timers are too far down on the priority list. A 50ms loop is a little tight. Also, response to user timers will be blocked while IR is being sent.
A really ugly detail is that response to button and key press is blocked while IR is being sent. There will be an acknowledge tone, but the key press will be thrown away.
I've been defining a special page accessable from the Home page via PageUp or PageDown that allows adjusting my own timers. For example, if I need to work out a delay between PowerOn and giving an Input command, this can require a number of download iterations. I start with a global default and adjust as needed. On the next download iteration, I'll update the default. Sometimes this takes a while to work out. In selected cases I'll have a user mess with this so that we can find the minimum timing based on "real world" conditions. After a few days experience, I'll hard code the result of our trials.