I run a Java ATS and noticed that System.currentTimeMillis() "gains" about 8ms on each 5 second interval that I check it. The amount it's running fast continues to build until it totals ~1 second ahead and then it appears to self correct. I'm assuming this comes from drift on my system clock and somehow Windows updates once time is off by > 1 second. I've updated the Windows scheduled task to run at 9am every morning and follow these instructions: http://www.pretentiousname.com/timesync/index.html However, this doesn't do anything for the 1 second drift and it's pointless for me to track ms latency if I'm going to be off by an average of 500ms. Anyhow, is there a way to retrieve an accurate time, all the time? (either through Java or by getting Win7 clock to drift down to single digit ms) Appreciate any suggestions.