diff --git a/ghc/runtime/storage/SMstats.lc b/ghc/runtime/storage/SMstats.lc
index 74d5d92b36f44960b2907413324647c80d24abc8..b10db260f47748b0a18cdc932cd1bb38d135ce84 100644
--- a/ghc/runtime/storage/SMstats.lc
+++ b/ghc/runtime/storage/SMstats.lc
@@ -177,7 +177,7 @@ elapsedtime()
     struct timeb t;
 
     ftime(&t);
-    return t.time + 1e-3*t.millitm - ElapsedTimeStart;
+    return (fabs(t.time + 1e-3*t.millitm - ElapsedTimeStart));
 
 # endif /* HAVE_FTIME */
 #endif /* not stumped */