diff --git a/src/meshTools/coordSet/writers/ensight/ensightCoordSetWriterCollated.C b/src/meshTools/coordSet/writers/ensight/ensightCoordSetWriterCollated.C
index 3a0cafb27f7633b892d616842047ba9605947cd0..759544e15a618f3a3323422fde44876fbb808671 100644
--- a/src/meshTools/coordSet/writers/ensight/ensightCoordSetWriterCollated.C
+++ b/src/meshTools/coordSet/writers/ensight/ensightCoordSetWriterCollated.C
@@ -122,7 +122,53 @@ Foam::fileName Foam::coordSetWriters::ensightWriter::writeCollated
         );
 
 
-        // Do case file
+        // Location for data (and possibly the geometry as well)
+        fileName dataDir = baseDir/"data"/word::printf(fmt, timeIndex);
+
+        // As per mkdir -p "data/00000000"
+        mkDir(dataDir);
+
+
+        const fileName geomFile(baseDir/geometryName);
+
+        if (!exists(geomFile))
+        {
+            if (verbose_)
+            {
+                Info<< "Writing geometry to " << geomFile.name() << endl;
+            }
+
+            // Two-argument form for path-name to avoid validating base-dir
+            ensightGeoFile osGeom
+            (
+                geomFile.path(),
+                geomFile.name(),
+                writeFormat_
+            );
+
+            writeGeometry(osGeom, elemOutput);
+        }
+
+
+        // Write field
+        ensightFile osField
+        (
+            dataDir,
+            varName,
+            writeFormat_
+        );
+
+        if (verbose_)
+        {
+            Info<< "Writing field file to " << osField.name() << endl;
+        }
+
+
+        // Write field (serial only)
+        writeTrackField<Type>(osField, fieldPtrs);
+
+
+        // Update case file
         if (stateChanged)
         {
             OFstream osCase(outputFile, IOstream::ASCII);
@@ -216,53 +262,6 @@ Foam::fileName Foam::coordSetWriters::ensightWriter::writeCollated
             osCase << "# end" << nl;
         }
 
-
-        // Location for data (and possibly the geometry as well)
-        fileName dataDir = baseDir/"data"/word::printf(fmt, timeIndex);
-
-        // As per mkdir -p "data/00000000"
-        mkDir(dataDir);
-
-
-        const fileName geomFile(baseDir/geometryName);
-
-        if (!exists(geomFile))
-        {
-            if (verbose_)
-            {
-                Info<< "Writing geometry to " << geomFile.name() << endl;
-            }
-
-            // Two-argument form for path-name to avoid validating base-dir
-            ensightGeoFile osGeom
-            (
-                geomFile.path(),
-                geomFile.name(),
-                writeFormat_
-            );
-
-            writeGeometry(osGeom, elemOutput);
-        }
-
-
-        // Write field
-        ensightFile osField
-        (
-            dataDir,
-            varName,
-            writeFormat_
-        );
-
-        if (verbose_)
-        {
-            Info<< "Writing field file to " << osField.name() << endl;
-        }
-
-
-        // Write field (serial only)
-        writeTrackField<Type>(osField, fieldPtrs);
-
-
         // Timestamp in the directory for future reference
         {
             OFstream timeStamp(dataDir/"time");
diff --git a/src/meshTools/coordSet/writers/ensight/ensightCoordSetWriterUncollated.C b/src/meshTools/coordSet/writers/ensight/ensightCoordSetWriterUncollated.C
index f0f89997ede57796e69be72d4ab8f89966c2b3b0..4849dc1ff9f9bc4da0e576be2232e2fe3b49c370 100644
--- a/src/meshTools/coordSet/writers/ensight/ensightCoordSetWriterUncollated.C
+++ b/src/meshTools/coordSet/writers/ensight/ensightCoordSetWriterUncollated.C
@@ -97,13 +97,6 @@ Foam::fileName Foam::coordSetWriters::ensightWriter::writeUncollated
             mkDir(outputFile.path());
         }
 
-        OFstream osCase(outputFile, IOstream::ASCII);
-
-        // Format options
-        osCase.setf(ios_base::left);
-        osCase.setf(ios_base::scientific, ios_base::floatfield);
-        osCase.precision(5);
-
         // Two-argument form for path-name to avoid validating base-dir
         ensightGeoFile osGeom
         (
@@ -118,36 +111,46 @@ Foam::fileName Foam::coordSetWriters::ensightWriter::writeUncollated
             writeFormat_
         );
 
-        osCase
-            << "FORMAT" << nl
-            << "type: ensight gold" << nl
-            << nl
-            << "GEOMETRY" << nl
-            << "model:  1   " << osGeom.name().name() << nl
-            << nl
-            << "VARIABLE" << nl
-            << ensightPTraits<Type>::typeName
-            <<
-            (
-                true  // this->isPointData()
-              ? " per node:    1  "  // time-set 1
-              : " per element: 1  "  // time-set 1
-            )
-            << setw(15) << varName << ' '
-            << baseName.c_str() << ".********." << varName << nl;
-
-        osCase
-            << nl
-            << "TIME" << nl;
-
-        ensightCase::printTimeset(osCase, 1, timeValue);
-        osCase << "# end" << nl;
-
-
         writeGeometry(osGeom, elemOutput);
 
         // Write field (serial only)
         writeTrackField<Type>(osField, fieldPtrs);
+
+
+        // Update case file
+        {
+            OFstream osCase(outputFile, IOstream::ASCII);
+
+            // Format options
+            osCase.setf(ios_base::left);
+            osCase.setf(ios_base::scientific, ios_base::floatfield);
+            osCase.precision(5);
+
+            osCase
+                << "FORMAT" << nl
+                << "type: ensight gold" << nl
+                << nl
+                << "GEOMETRY" << nl
+                << "model:  1   " << osGeom.name().name() << nl
+                << nl
+                << "VARIABLE" << nl
+                << ensightPTraits<Type>::typeName
+                <<
+                (
+                    true  // this->isPointData()
+                  ? " per node:    1  "  // time-set 1
+                  : " per element: 1  "  // time-set 1
+                )
+                << setw(15) << varName << ' '
+                << baseName.c_str() << ".********." << varName << nl;
+
+            osCase
+                << nl
+                << "TIME" << nl;
+
+            ensightCase::printTimeset(osCase, 1, timeValue);
+            osCase << "# end" << nl;
+        }
     }
 
     wroteGeom_ = true;
diff --git a/src/surfMesh/writers/ensight/ensightSurfaceWriterCollated.C b/src/surfMesh/writers/ensight/ensightSurfaceWriterCollated.C
index 511df9159a8106f7ef124139fa4bd5a4c6b6ddef..18da18709658b30d575ce31ee1c1334cf6d85031 100644
--- a/src/surfMesh/writers/ensight/ensightSurfaceWriterCollated.C
+++ b/src/surfMesh/writers/ensight/ensightSurfaceWriterCollated.C
@@ -129,7 +129,59 @@ Foam::fileName Foam::surfaceWriters::ensightWriter::writeCollated
         );
 
 
-        // Do case file
+        // Location for data (and possibly the geometry as well)
+        fileName dataDir = baseDir/"data"/word::printf(fmt, timeIndex);
+
+        // As per mkdir -p "data/00000000"
+        mkDir(dataDir);
+
+
+        const fileName geomFile(baseDir/geometryName);
+
+        // Ensight Geometry
+        ensightOutputSurface part
+        (
+            surf.points(),
+            surf.faces(),
+            geomFile.name()
+        );
+
+        if (!exists(geomFile))
+        {
+            if (verbose_)
+            {
+                Info<< "Writing geometry to " << geomFile.name() << endl;
+            }
+
+            // Two-argument form for path-name to avoid validating base-dir
+            ensightGeoFile osGeom
+            (
+                geomFile.path(),
+                geomFile.name(),
+                writeFormat_
+            );
+            part.write(osGeom); // serial
+        }
+
+        // Write field
+        ensightFile osField
+        (
+            dataDir,
+            varName,
+            writeFormat_
+        );
+
+        if (verbose_)
+        {
+            Info<< "Writing field file to " << osField.name() << endl;
+        }
+
+        // Write field (serial only)
+        osField.writeKeyword(ensightPTraits<Type>::typeName);
+        part.writeData(osField, tfield(), this->isPointData());
+
+
+        // Update case file
         if (stateChanged)
         {
             OFstream osCase(outputFile, IOstream::ASCII);
@@ -223,58 +275,6 @@ Foam::fileName Foam::surfaceWriters::ensightWriter::writeCollated
             osCase << "# end" << nl;
         }
 
-
-        // Location for data (and possibly the geometry as well)
-        fileName dataDir = baseDir/"data"/word::printf(fmt, timeIndex);
-
-        // As per mkdir -p "data/00000000"
-        mkDir(dataDir);
-
-
-        const fileName geomFile(baseDir/geometryName);
-
-        // Ensight Geometry
-        ensightOutputSurface part
-        (
-            surf.points(),
-            surf.faces(),
-            geomFile.name()
-        );
-
-        if (!exists(geomFile))
-        {
-            if (verbose_)
-            {
-                Info<< "Writing geometry to " << geomFile.name() << endl;
-            }
-
-            // Two-argument form for path-name to avoid validating base-dir
-            ensightGeoFile osGeom
-            (
-                geomFile.path(),
-                geomFile.name(),
-                writeFormat_
-            );
-            part.write(osGeom); // serial
-        }
-
-        // Write field
-        ensightFile osField
-        (
-            dataDir,
-            varName,
-            writeFormat_
-        );
-
-        if (verbose_)
-        {
-            Info<< "Writing field file to " << osField.name() << endl;
-        }
-
-        // Write field (serial only)
-        osField.writeKeyword(ensightPTraits<Type>::typeName);
-        part.writeData(osField, tfield(), this->isPointData());
-
         // Timestamp in the directory for future reference
         {
             OFstream timeStamp(dataDir/"time");
diff --git a/src/surfMesh/writers/ensight/ensightSurfaceWriterUncollated.C b/src/surfMesh/writers/ensight/ensightSurfaceWriterUncollated.C
index fde360edc0c1ccc465464547c6d62df689cedac4..9d73cc06f79043774040e734b0091ed816e700d4 100644
--- a/src/surfMesh/writers/ensight/ensightSurfaceWriterUncollated.C
+++ b/src/surfMesh/writers/ensight/ensightSurfaceWriterUncollated.C
@@ -69,7 +69,6 @@ Foam::fileName Foam::surfaceWriters::ensightWriter::writeUncollated()
             mkDir(outputDir);
         }
 
-        OFstream osCase(outputFile);
         ensightGeoFile osGeom
         (
             outputDir,
@@ -77,6 +76,16 @@ Foam::fileName Foam::surfaceWriters::ensightWriter::writeUncollated()
             writeFormat_
         );
 
+        ensightOutputSurface part
+        (
+            surf.points(),
+            surf.faces(),
+            osGeom.name().name()
+        );
+        part.write(osGeom); // serial
+
+        // Update case file
+        OFstream osCase(outputFile);
         osCase
             << "FORMAT" << nl
             << "type: ensight gold" << nl
@@ -87,14 +96,6 @@ Foam::fileName Foam::surfaceWriters::ensightWriter::writeUncollated()
             << "TIME" << nl;
 
         ensightCase::printTimeset(osCase, 1, scalar(0));
-
-        ensightOutputSurface part
-        (
-            surf.points(),
-            surf.faces(),
-            osGeom.name().name()
-        );
-        part.write(osGeom); // serial
     }
 
     wroteGeom_ = true;
@@ -170,13 +171,6 @@ Foam::fileName Foam::surfaceWriters::ensightWriter::writeUncollated
             mkDir(outputFile.path());
         }
 
-        OFstream osCase(outputFile, IOstream::ASCII);
-
-        // Format options
-        osCase.setf(ios_base::left);
-        osCase.setf(ios_base::scientific, ios_base::floatfield);
-        osCase.precision(5);
-
         // Two-argument form for path-name to avoid validating base-dir
         ensightGeoFile osGeom
         (
@@ -191,32 +185,6 @@ Foam::fileName Foam::surfaceWriters::ensightWriter::writeUncollated
             writeFormat_
         );
 
-        osCase
-            << "FORMAT" << nl
-            << "type: ensight gold" << nl
-            << nl
-            << "GEOMETRY" << nl
-            << "model:  1   " << osGeom.name().name() << nl
-            << nl
-            << "VARIABLE" << nl
-            << ensightPTraits<Type>::typeName
-            <<
-            (
-                this->isPointData()
-              ? " per node:    1  "  // time-set 1
-              : " per element: 1  "  // time-set 1
-            )
-            << setw(15) << varName << ' '
-            << baseName.c_str() << ".********." << varName << nl;
-
-        osCase
-            << nl
-            << "TIME" << nl;
-
-        ensightCase::printTimeset(osCase, 1, timeValue);
-        osCase << "# end" << nl;
-
-
         // Ensight Geometry
         ensightOutputSurface part
         (
@@ -229,6 +197,42 @@ Foam::fileName Foam::surfaceWriters::ensightWriter::writeUncollated
         // Write field (serial)
         osField.writeKeyword(ensightPTraits<Type>::typeName);
         part.writeData(osField, tfield(), this->isPointData());
+
+
+        // Update case file
+        {
+            OFstream osCase(outputFile, IOstream::ASCII);
+
+            // Format options
+            osCase.setf(ios_base::left);
+            osCase.setf(ios_base::scientific, ios_base::floatfield);
+            osCase.precision(5);
+
+            osCase
+                << "FORMAT" << nl
+                << "type: ensight gold" << nl
+                << nl
+                << "GEOMETRY" << nl
+                << "model:  1   " << osGeom.name().name() << nl
+                << nl
+                << "VARIABLE" << nl
+                << ensightPTraits<Type>::typeName
+                <<
+                (
+                    this->isPointData()
+                  ? " per node:    1  "  // time-set 1
+                  : " per element: 1  "  // time-set 1
+                )
+                << setw(15) << varName << ' '
+                << baseName.c_str() << ".********." << varName << nl;
+
+            osCase
+                << nl
+                << "TIME" << nl;
+
+                ensightCase::printTimeset(osCase, 1, timeValue);
+                osCase << "# end" << nl;
+        }
     }
 
     wroteGeom_ = true;