If the interrupt ticks directly before vs directly after the 'ms=0' reset you will have whopping 1ms deviation in timing. If that's not acceptable make it a us interrupt.
The question was what happens if the timer interrupt happens WHILE you are resetting the value of a 4 byte variable. Doing that is NOT an atomic operation. It takes 4 clock ticks to reset a 4 byte variable. Between any two of them, the interrupt could fire, and screw up your quarter, half, or three quarters changed value.
You should be disabling interrupts before resetting the value, and then re-enabling them.