diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C
index f19b7f69d1c37e0c70af33594953a0693d123062..d7ba9df79fd2c58aa27be264479a322761fc3a66 100644
--- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C
+++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C
@@ -68,12 +68,6 @@ void Foam::fieldAverage::initialize()
     resetFields(prime2MeanScalarFields_);
     resetFields(prime2MeanSymmTensorFields_);
 
-    totalIter_.clear();
-    totalIter_.setSize(faItems_.size(), 1);
-
-    totalTime_.clear();
-    totalTime_.setSize(faItems_.size(), obr_.time().deltaTValue());
-
 
     // Add mean fields to the field lists
     forAll(faItems_, fieldI)
@@ -248,6 +242,12 @@ void Foam::fieldAverage::writeAveragingProperties() const
 
 void Foam::fieldAverage::readAveragingProperties()
 {
+    totalIter_.clear();
+    totalIter_.setSize(faItems_.size(), 1);
+
+    totalTime_.clear();
+    totalTime_.setSize(faItems_.size(), obr_.time().deltaTValue());
+
     if (resetOnRestart_)
     {
         Info<< "fieldAverage: starting averaging at time "
@@ -258,7 +258,7 @@ void Foam::fieldAverage::readAveragingProperties()
         IOobject propsDictHeader
         (
             "fieldAveragingProperties",
-            obr_.time().timeName(),
+            obr_.time().timeName(obr_.time().startTime().value()),
             "uniform",
             obr_,
             IOobject::MUST_READ_IF_MODIFIED,
@@ -290,6 +290,7 @@ void Foam::fieldAverage::readAveragingProperties()
                     << " time = " << totalTime_[fieldI] << endl;
             }
         }
+
         Info<< endl;
     }
 }
@@ -358,6 +359,8 @@ void Foam::fieldAverage::read(const dictionary& dict)
 {
     if (active_)
     {
+        initialised_ = false;
+
         dict.readIfPresent("resetOnRestart", resetOnRestart_);
         dict.readIfPresent("resetOnOutput", resetOnOutput_);
         dict.lookup("fields") >> faItems_;
@@ -394,6 +397,16 @@ void Foam::fieldAverage::write()
 {
     if (active_)
     {
+        if (!initialised_)
+        {
+            initialize();
+
+            // ensure first averaging works unconditionally
+            prevTimeIndex_ = -1;
+
+            initialised_ = true;
+        }
+
         calcAverages();
         writeAverages();
         writeAveragingProperties();