diff --git a/GenericIO.cxx b/GenericIO.cxx
index b3cb88206051b690db34354d7252ac072e877b38..4082cfebc3eae5ded215b96032f6199c0005140e 100644
--- a/GenericIO.cxx
+++ b/GenericIO.cxx
@@ -518,6 +518,11 @@ void GenericIO::write() {
     LocalFileName = FileName;
   }
 
+#ifndef GENERICIO_NO_MPI
+  if(Rank0CreateAll && NRanks > 1)
+    MPI_Barrier(Comm);
+#endif
+
   RankHeader<IsBigEndian> RHLocal;
   int Dims[3], Periods[3], Coords[3];
 
@@ -797,7 +802,7 @@ nocomp:
 
     setFH(MPI_COMM_SELF);
 
-    FH.get()->open(LocalFileName, false, Rank0CreateAll);
+    FH.get()->open(LocalFileName, false, Rank0CreateAll && NRanks>1);
     FH.get()->setSize(FileSize);
     FH.get()->write(&Header[0], HeaderSize, 0, "header");