that solution presumes the timer hasn't rolled over more than once which there is no way of knowing. You can only reliably report a period of 2.55 mS and twice the frequency. of course, I am assuming that the timer keeps counting after the roll-over.
That is one braindead microcontroller.
I think you can do better by polling the timer for rollover and keep track of the number of times. first int starts the process (clears tick flag, starts timer). mainline polls roll-over flag, counting rollovers and reseting the flag. next int reads timer partial and puts it together with rollover count to get the rotational period in 10 uS units. frequency is the inverse. You uipdate what needs to be updated (display, whatever) and then wait for the next interrupt to start to process all over again.