It seems like you need two timers :) Once every 5 seconds, and one every 0.5 seconds, and your implementation would be a lot easier to understand than messing with the -fireDate.

`NSTimer` is an old beast, and the fact that it has some methods it doesn't mean that they're necessary. If there are other (good) ways to do what you're trying to do I'd rather not add extra complexity to this class.