Index: interpreter/platform/windows/TimeSupport.cpp
===================================================================
--- interpreter/platform/windows/TimeSupport.cpp	(revision 12655)
+++ interpreter/platform/windows/TimeSupport.cpp	(working copy)
@@ -41,6 +41,8 @@
 #include "RexxDateTime.hpp"
 #include "Interpreter.hpp"
 #include "SystemInterpreter.hpp"
+#include "Windows.h"
+#include "sysinfoapi.h"
 #include <time.h>
 
 #define DELTA_EPOCH_IN_MICROSECS  11644473600000000ULL
@@ -64,7 +66,15 @@
     uint64_t sysTimeStamp = 0;
     uint64_t localTimeStamp = 0;
     // this retrieves the time as UTC, in a form we can do arithmetic with
-    GetSystemTimeAsFileTime(&systemFileTime);
+    GetSystemTimePreciseAsFileTime(&systemFileTime);
+
+    // convert the time into a 64-bit integer. This will be to nanosecond precision
+    ULARGE_INTEGER time;
+    time.LowPart = systemFileTime.dwLowDateTime;
+    time.HighPart = systemFileTime.dwHighDateTime;
+
+    // this gets the microseconds part of the timestamp.
+    uint64_t microseconds = (time.QuadPart / 10) % 1000000;
     // this converts the time to the local time zone
     FileTimeToLocalFileTime(&systemFileTime, &localFileTime);
 
@@ -108,7 +118,7 @@
     Date->hours = localTime.wHour;
     Date->minutes = localTime.wMinute;
     Date->seconds = localTime.wSecond;
-    Date->microseconds = localTime.wMilliseconds * 1000;
+    Date->microseconds = (int32_t)microseconds;
     Date->day = localTime.wDay;
     Date->month = localTime.wMonth;
     Date->year = localTime.wYear;
