diff --git a/src/OpenFOAM/db/Time/TimeIO.C b/src/OpenFOAM/db/Time/TimeIO.C
index fc3ad8857cca9f384296f6ab8ad3588179b248a1..c74b67438989c0d2e577d725f3aa17755a33914d 100644
--- a/src/OpenFOAM/db/Time/TimeIO.C
+++ b/src/OpenFOAM/db/Time/TimeIO.C
@@ -44,6 +44,7 @@ void Foam::Time::readDict()
         );
     }
 
+    scalar oldWriteInterval = writeInterval_;
     if (controlDict_.readIfPresent("writeInterval", writeInterval_))
     {
         if (writeControl_ == wcTimeStep && label(writeInterval_) < 1)
@@ -58,6 +59,22 @@ void Foam::Time::readDict()
         controlDict_.lookup("writeFrequency") >> writeInterval_;
     }
 
+    if (oldWriteInterval != writeInterval_)
+    {
+        switch(writeControl_)
+        {
+            case wcRunTime:
+            case wcAdjustableRunTime:
+                // Recalculate outputTimeIndex_ to be in units of current
+                // writeInterval.
+                outputTimeIndex_ *= oldWriteInterval/writeInterval_;
+            break;
+
+            default:
+            break;
+        }
+    }
+
     if (controlDict_.readIfPresent("purgeWrite", purgeWrite_))
     {
         if (purgeWrite_ < 0)