Here is a Windows XP machine behind a consumer broadband connection and a NAT router, running NTP with several servers, each configured with maxpoll 12, meaning if all goes well each is queried once every hour and six minutes (4096 seconds). As a result there aren't many data points to plot, but note the bold red line stays within 10ms of zero:

On the same LAN, running the same 4.2.4p6 version of ntpd, there is a relatively heavily used Windows Vista machine doing PVR duty. It exhibits a problem with the Windows port of the reference NTP implementation which I've also seen on other Vista machines. The local clock as seen by NTP jumps around wildly, usually less than 100ms:

This machine has fewer time servers configured, two on the LAN with it and one across a 140ms VPN. If anything, that configuration should help stabilize the offset compared to the XP machine's 8 or so servers all at least 40ms away.
The two graphs above represent the same 24 hour period (2009-01-19 UTC). Now take a look at the performance of NTP on that Vista machine after I switched off QueryPerformanceCounter interpolation and simply used the 1ms-granularity system time as NTP's view of the system time.

No points for guessing when the change was made. See my comp.protocols.time.ntp post for more about the interpolation scheme and hopefully discussion of how to salvage it.
Graphs
generated by Meinberg's NTP Time Server Monitor for Windows:
http://www.meinberg.de/english/sw/time-server-monitor.htm
Dave Hart 19-Jan-2009 10:00pm yokel time (UTC - 0800)