diff --git a/src/OpenFOAM/db/IOobjects/decomposedBlockData/decomposedBlockData.C b/src/OpenFOAM/db/IOobjects/decomposedBlockData/decomposedBlockData.C
index d5a93363386f08d71b4b46d651ba290019deddaa..21ad121dfb995e65b0a2515ccf71db812419042a 100644
--- a/src/OpenFOAM/db/IOobjects/decomposedBlockData/decomposedBlockData.C
+++ b/src/OpenFOAM/db/IOobjects/decomposedBlockData/decomposedBlockData.C
@@ -30,8 +30,9 @@ License
 #include "Fstream.H"
 #include "StringStream.H"
 #include "dictionary.H"
-#include <sys/time.h>
 #include "objectRegistry.H"
+#include "foamVersion.H"
+#include <sys/time.h>
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -204,6 +205,20 @@ void Foam::decomposedBlockData::writeHeader
         << "    version     " << version << ";\n"
         << "    format      " << format << ";\n"
         << "    class       " << type << ";\n";
+
+    // This may be useful to have as well
+    /*
+    if (os.format() == IOstream::BINARY)
+    {
+        os  << "    arch        " << Foam::FOAMbuildArch << ";\n";
+    }
+    */
+
+    if (Pstream::parRun())
+    {
+        os  << "    blocks      " << Pstream::nProcs() << ";\n";
+    }
+
     if (note.size())
     {
         os  << "    note        " << note << ";\n";
@@ -938,7 +953,7 @@ Foam::label Foam::decomposedBlockData::numBlocks(const fileName& fName)
         return nBlocks;
     }
 
-    // Skip header
+    // FoamFile header
     token firstToken(is);
 
     if
@@ -951,8 +966,15 @@ Foam::label Foam::decomposedBlockData::numBlocks(const fileName& fName)
         dictionary headerDict(is);
         is.version(headerDict.lookup("version"));
         is.format(headerDict.lookup("format"));
+
+        // Obtain number of blocks directly
+        if (headerDict.readIfPresent("blocks", nBlocks))
+        {
+            return nBlocks;
+        }
     }
 
+    // Fallback to brute force read of each data block
     List<char> data;
     while (is.good())
     {
diff --git a/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C b/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C
index b5dbb13517b9d583e279cf65abf343d026194206..dd105496a4ee5460e21cf49271dc59800d3ed415 100644
--- a/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C
+++ b/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C
@@ -200,7 +200,7 @@ Foam::fileOperations::collatedFileOperation::collatedFileOperation
                 << "         may \"hang\".  If thread support cannot be "
                    "enabled, deactivate threading" << nl
                 << "         by setting maxThreadFileBufferSize to 0 in "
-                   "$FOAM_ETC/controlDict"
+                   "the OpenFOAM etc/controlDict"
                 << endl;
         }