diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8Data.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8Data.C
index ac5357cafaf321e4e6316deda46e5ac3202dea13..08fc68edf0c21bf6d09065c39d5af64042e63728 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8Data.C
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8Data.C
@@ -61,7 +61,15 @@ Foam::hexRef8Data::hexRef8Data(const IOobject& io)
     {
         IOobject rio(io);
         rio.rename("level0Edge");
-        bool haveFile = returnReduce(rio.headerOk(), orOp<bool>());
+
+        // MEJ: temporarily (until global reading of UniformedFields)
+        //      do not read level0Edge on processors that do not have it.
+        bool haveFile = rio.headerOk();
+        if (rio.readOpt() != IOobject::READ_IF_PRESENT)
+        {
+            reduce(haveFile, orOp<bool>());
+        }
+
         if (haveFile)
         {
             Info<< "Reading hexRef8 data : " << rio.name() << endl;
@@ -264,7 +272,7 @@ void Foam::hexRef8Data::sync(const IOobject& io)
     if (hasLevel0Edge)
     {
         // Get master length
-        scalar masterLen = level0EdgePtr_().value();
+        scalar masterLen = (Pstream::master() ? level0EdgePtr_().value() : 0);
         Pstream::scatter(masterLen);
         if (!level0EdgePtr_.valid())
         {