diff --git a/src/functionObjects/field/fieldAverage/fieldAverage.C b/src/functionObjects/field/fieldAverage/fieldAverage.C
index 22fa421608c9ce5b7a8b8108ee23b5919e4f2b79..b51e52559ae3153ea59a15264d24a0c82c12615d 100644
--- a/src/functionObjects/field/fieldAverage/fieldAverage.C
+++ b/src/functionObjects/field/fieldAverage/fieldAverage.C
@@ -136,10 +136,16 @@ void Foam::functionObjects::fieldAverage::calcAverages()
     }
 
     bool doRestart = false;
-    if (periodicRestart_ && currentTime > restartPeriod_*periodIndex_)
+    if (periodicRestart_)
     {
-        doRestart = true;
-        periodIndex_++;
+        const scalar deltaT = obr().time().deltaTValue();
+        const scalar nextTime = restartPeriod_*periodIndex_ + 0.5*deltaT;
+
+        if (currentTime > nextTime)
+        {
+            doRestart = true;
+            ++periodIndex_;
+        }
     }
 
     if (currentTime >= restartTime_)