diff --git a/src/OpenFOAM/meshes/polyMesh/zones/ZoneMesh/ZoneMesh.C b/src/OpenFOAM/meshes/polyMesh/zones/ZoneMesh/ZoneMesh.C
index 9dc2bcc03fc687f507133c6558fbb9185b8d0466..1abac79a9ad06f1bdafaaa35dce3cd5cbbe67828 100644
--- a/src/OpenFOAM/meshes/polyMesh/zones/ZoneMesh/ZoneMesh.C
+++ b/src/OpenFOAM/meshes/polyMesh/zones/ZoneMesh/ZoneMesh.C
@@ -29,6 +29,18 @@ License
 #include "stringListOps.H"
 #include "Pstream.H"
 
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    template<class ZoneType, class MeshType>
+    int Foam::ZoneMesh<ZoneType, MeshType>::disallowGenericZones
+    (
+        debug::debugSwitch("disallowGenericZones", 0)
+    );
+}
+
+
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 template<class ZoneType, class MeshType>
@@ -429,8 +441,40 @@ Foam::label Foam::ZoneMesh<ZoneType, MeshType>::findZoneID
             << "List of available zone names: " << names() << endl;
     }
 
-    // Not found
-    return -1;
+    if (disallowGenericZones != 0)
+    {
+        // Create a new ...
+        Info<< "Creating dummy zone " << zoneName << endl;
+        dictionary dict;
+        dict.set("type", ZoneType::typeName);
+        dict.set(ZoneType::labelsName, labelList());
+
+        // flipMap only really applicable for face zones, but should not get
+        // in the way for cell- and point-zones...
+        dict.set("flipMap", boolList());
+        label newZonei = zones.size();
+
+        ZoneMesh<ZoneType, MeshType>& zm =
+            const_cast<ZoneMesh<ZoneType, MeshType>&>(*this);
+
+        zm.append
+        (
+            new ZoneType
+            (
+                zoneName,
+                dict,
+                newZonei,
+                zm
+            )
+        );
+
+        return newZonei;
+    }
+    else
+    {
+        // Not found
+        return -1;
+    }
 }
 
 
diff --git a/src/OpenFOAM/meshes/polyMesh/zones/ZoneMesh/ZoneMesh.H b/src/OpenFOAM/meshes/polyMesh/zones/ZoneMesh/ZoneMesh.H
index 94a8aa483c5a6f6010027c95f87f3c88b834ee68..59d1d220526ee53ac4fb838442d5d9a79d2da2ff 100644
--- a/src/OpenFOAM/meshes/polyMesh/zones/ZoneMesh/ZoneMesh.H
+++ b/src/OpenFOAM/meshes/polyMesh/zones/ZoneMesh/ZoneMesh.H
@@ -102,6 +102,10 @@ class ZoneMesh
 
 public:
 
+    //- Debug switch to disallow the use of generic zones
+    static int disallowGenericZones;
+
+
     // Constructors
 
         //- Read constructor given IOobject and a MeshType reference
diff --git a/src/meshTools/sets/topoSets/topoSet.C b/src/meshTools/sets/topoSets/topoSet.C
index 8caf02d3ba62f9c0f6821de11973f4ce326f04cb..754100d1dc2fdffd1b97a5dcc47a43bfe3b6626c 100644
--- a/src/meshTools/sets/topoSets/topoSet.C
+++ b/src/meshTools/sets/topoSets/topoSet.C
@@ -37,6 +37,11 @@ namespace Foam
     defineRunTimeSelectionTable(topoSet, word);
     defineRunTimeSelectionTable(topoSet, size);
     defineRunTimeSelectionTable(topoSet, set);
+
+    int Foam::topoSet::disallowGenericSets
+    (
+        debug::debugSwitch("disallowGenericSets", 0)
+    );
 }
 
 
@@ -297,14 +302,14 @@ Foam::IOobject Foam::topoSet::findIOobject
     writeOption w
 )
 {
-    return IOobject
+    IOobject io
     (
         name,
         mesh.time().findInstance
         (
             mesh.dbDir()/polyMesh::meshSubDir/"sets",
             word::null,
-            r,
+            IOobject::READ_IF_PRESENT,
             mesh.facesInstance()
         ),
         polyMesh::meshSubDir/"sets",
@@ -312,6 +317,14 @@ Foam::IOobject Foam::topoSet::findIOobject
         r,
         w
     );
+
+    if (!io.typeHeaderOk<topoSet>(false) && disallowGenericSets != 0)
+    {
+        DebugInfo<< "Setting no read for set " << name << endl;
+        io.readOpt() = IOobject::NO_READ;
+    }
+
+    return io;
 }
 
 
diff --git a/src/meshTools/sets/topoSets/topoSet.H b/src/meshTools/sets/topoSets/topoSet.H
index 82ca3e42ee9f4520a6e3a1793f20be93b8d98bf3..55bd7941cf722dabd57fa15a01c1385fbd3ee693 100644
--- a/src/meshTools/sets/topoSets/topoSet.H
+++ b/src/meshTools/sets/topoSets/topoSet.H
@@ -142,6 +142,9 @@ public:
         //- Name of file set will use.
         static fileName localPath(const polyMesh& mesh, const word& name);
 
+        //- Debug switch to disallow the use of generic sets
+        static int disallowGenericSets;
+
 
     // Declare run-time constructor selection table