Index: LowResolutionStopwatch.cs =================================================================== --- LowResolutionStopwatch.cs (revision 9094) +++ LowResolutionStopwatch.cs (revision 9095) @@ -54,8 +54,25 @@ public void Stop() { long now = Environment.TickCount; + + long elapsed = 0; // Calculate time different, handle possible overflow - long elapsed = (now < startTime) ? Int32.MaxValue - startTime + now : now - startTime; + if (now < startTime) + { + if (now < 0) + { + elapsed = 1 + ((long)Int32.MaxValue - startTime) + (now - (long)Int32.MinValue); + } + else + { + // The original MySql code assumed overflow to zero. + elapsed = Int32.MaxValue - startTime + now; + } + } + else + { + elapsed = now - startTime; + } millis += elapsed; }