diff --git a/fileutil.cc b/fileutil.cc
index b994f5c..86d66e0 100644
--- a/fileutil.cc
+++ b/fileutil.cc
@@ -46,7 +46,11 @@
   if (stat(filename.as_string().c_str(), &st) < 0) {
     return -2.0;
   }
+#if defined(__linux__)
+  return st.st_mtime + st.st_mtim.tv_nsec * 0.001 * 0.001 * 0.001;
+#else
   return st.st_mtime;
+#endif
 }
 
 int RunCommand(const string& shell, const string& cmd, bool redirect_stderr,
diff --git a/main.cc b/main.cc
index 9a9f173..c1f3fa7 100644
--- a/main.cc
+++ b/main.cc
@@ -231,8 +231,9 @@
     ClearGlobCache();
   }
 
-  time_t start_time;
-  time(&start_time);
+  struct timespec ts;
+  clock_gettime(CLOCK_REALTIME, &ts);
+  double start_time = ts.tv_sec + ts.tv_nsec * 0.001 * 0.001 * 0.001;
 
   MakefileCacheManager* cache_mgr = NewMakefileCacheManager();
 
diff --git a/ninja.cc b/ninja.cc
index d2e9828..ccdb99b 100644
--- a/ninja.cc
+++ b/ninja.cc
@@ -167,7 +167,7 @@
 class NinjaGenerator {
  public:
   NinjaGenerator(const char* ninja_suffix, const char* ninja_dir, Evaluator* ev,
-                 time_t start_time)
+                 double start_time)
       : ce_(ev), ev_(ev), fp_(NULL), rule_id_(0), start_time_(start_time) {
     ev_->set_avoid_io(true);
     shell_ = ev->EvalVar(kShellSym);
@@ -709,8 +709,10 @@
 
   void GenerateStamp() {
     FILE* fp = fopen(GetStampFilename().c_str(), "wb");
+    CHECK(fp);
 
-    DumpInt(fp, start_time_);
+    size_t r = fwrite(&start_time_, sizeof(start_time_), 1, fp);
+    CHECK(r == 1);
 
     unordered_set<string> makefiles;
     MakefileCacheManager::Get()->GetAllFilenames(&makefiles);
@@ -763,7 +765,7 @@
   shared_ptr<string> shell_;
   map<string, string> used_envs_;
   string kati_binary_;
-  time_t start_time_;
+  double start_time_;
 };
 
 void GenerateNinja(const char* ninja_suffix,
@@ -772,7 +774,7 @@
                    Evaluator* ev,
                    bool build_all_targets,
                    const string& orig_args,
-                   time_t start_time) {
+                   double start_time) {
   NinjaGenerator ng(ninja_suffix, ninja_dir, ev, start_time);
   ng.Generate(nodes, build_all_targets, orig_args);
 }
@@ -786,7 +788,9 @@
     return true;
   ScopedFile sfp(fp);
 
-  time_t gen_time = LoadInt(fp);
+  double gen_time;
+  size_t r = fread(&gen_time, sizeof(gen_time), 1, fp);
+  CHECK(r == 1);
 
   string s, s2;
   int num_files = LoadInt(fp);
diff --git a/ninja.h b/ninja.h
index d7f9e32..6a92617 100644
--- a/ninja.h
+++ b/ninja.h
@@ -33,7 +33,7 @@
                    Evaluator* ev,
                    bool build_all_targets,
                    const string& orig_args,
-                   time_t start_time);
+                   double start_time);
 
 bool NeedsRegen(const char* ninja_suffix,
                 const char* ninja_dir);
diff --git a/testcase/ninja_regen.sh b/testcase/ninja_regen.sh
index 4ce1072..8c4f411 100755
--- a/testcase/ninja_regen.sh
+++ b/testcase/ninja_regen.sh
@@ -31,7 +31,6 @@
   ./ninja.sh
 fi
 
-sleep 1
 cat <<EOF > Makefile
 all:
 	echo bar
@@ -66,7 +65,6 @@
   ./ninja.sh
 fi
 
-sleep 1
 touch PASS.mk
 ${mk} 2> ${log}
 if [ -e ninja.sh ]; then
@@ -76,7 +74,6 @@
   ./ninja.sh
 fi
 
-sleep 1
 touch XXX
 ${mk} 2> ${log}
 if [ -e ninja.sh ]; then
