I've seen a few threads asking about why AccurateTimeElapsed seems to not give accurate values. I read through some of the replies and most often people seem to forget to advise on one first, most basic thing.

AccurateTimeElapsed returns a SINGLE not an INTEGER value.
If you have it return the time elapsed to an integer variable, it will simply round it up or down, and the decimal part is very important in keeping accurate time. Otherwise, each rounding adds or substracts a little bit of time and you get wrong results.
I just thought I'd post this here instead of several old threads where I've found these problems without proper advice given.