I think you may be forgetting to add the time it takes for certain functions to execute.

PAUSE 2000 pauses for 2000 * 1mS.

For cnt=1 to 2000 ' this takes time
Usbservice ' this takes time
Pause 1 ' this should take about 1mS
Next cnt ' this takes time

Obviously, the 2nd version is NOT the same. You have to account for the time Usbservice
takes + the time to execute the for next loop.