diff --git a/src/Distribution/Distribution.cpp b/src/Distribution/Distribution.cpp
index 160e4ffec3713801cdf9c1b9e5534895c01a6ee3..9fcf78a14567143cd9a3ba0fd1c2a92555503983 100644
--- a/src/Distribution/Distribution.cpp
+++ b/src/Distribution/Distribution.cpp
@@ -1011,13 +1011,17 @@ void Distribution::createDistributionFromFile(size_t /*numberOfParticles*/, doub
     // Data input file is only read by node 0.
     std::ifstream inputFile;
     std::string fileName = Attributes::getString(itsAttr[Attrib::Distribution::FNAME]);
+    bool failedOpen = 0;
     if (Ippl::myNode() == 0) {
         inputFile.open(fileName.c_str());
+        failedOpen = static_cast<bool>(inputFile.fail());
     }
-    if (inputFile.fail()) {
+    reduce(failedOpen,failedOpen,OpAddAssign());
+    if (failedOpen) {
         throw OpalException("Distribution::createDistributionFromFile",
                             "Open file operation failed, please check if \""
-                            + fileName + "\" really exists.");
+                            + fileName
+                            + "\" really exists.");
     }
 
     size_t numberOfParticlesRead = getNumberOfParticlesInFile(inputFile);