diff --git a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C
index 1c4e484d5038ebb787f5e258879eb207235d1d05..6611940880ab42781891f5d0e67d973e7036b767 100644
--- a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C
+++ b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C
@@ -757,8 +757,8 @@ Foam::IOobject Foam::fileOperation::findInstance
         return io;
     }
 
-    // Search back through the time directories to find the time
-    // closest to and lower than current time
+    // Search back through the time directories to find the first time
+    // that is less than or equal to the current time
 
     instantList ts = time.times();
     label instanceI = ts.size()-1;
@@ -771,20 +771,21 @@ Foam::IOobject Foam::fileOperation::findInstance
         }
     }
 
-    // Continue searching from here
+    // Found the time, continue from here
     for (; instanceI >= 0; --instanceI)
     {
+        io.instance() = ts[instanceI].name();
+
         // Shortcut: if actual directory is the timeName we've already tested it
         if
         (
-            ts[instanceI].name() == startIO.instance()
-         && ts[instanceI].name() != stopInstance
+            io.instance() == startIO.instance()
+         && io.instance() != stopInstance
         )
         {
             continue;
         }
 
-        io.instance() = ts[instanceI].name();
         if (exists(io))
         {
             DebugInFunction
@@ -796,7 +797,7 @@ Foam::IOobject Foam::fileOperation::findInstance
         }
 
         // Check if hit minimum instance
-        if (ts[instanceI].name() == stopInstance)
+        if (io.instance() == stopInstance)
         {
             DebugInFunction
                 << "Hit stopInstance " << stopInstance << endl;
diff --git a/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.C
index aafc2afa12ba397b8eb03ec55ba038af601f9c96..2fedc2355c71316f7273aa636e03ac36103a869f 100644
--- a/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.C
+++ b/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.C
@@ -48,58 +48,29 @@ Foam::IOobject Foam::points0MotionSolver::points0IO(const polyMesh& mesh)
             IOobject::READ_IF_PRESENT
         );
 
-    if (instance != mesh.time().constant())
+    IOobject io
+    (
+        "points0",
+        instance,
+        polyMesh::meshSubDir,
+        mesh,
+        IOobject::MUST_READ,
+        IOobject::NO_WRITE,
+        false
+    );
+
+    // If points0 are located in constant directory, verify their existence
+    // or fallback to a copy of the original mesh points
+    if
+    (
+        instance == mesh.time().constant()
+     && !io.typeHeaderOk<pointIOField>()
+    )
     {
-        // points0 written to a time folder
-
-        return
-            IOobject
-            (
-                "points0",
-                instance,
-                polyMesh::meshSubDir,
-                mesh,
-                IOobject::MUST_READ,
-                IOobject::NO_WRITE,
-                false
-            );
+        io.rename("points");
     }
-    else
-    {
-        // Check that points0 are actually in constant directory
-
-        IOobject io
-        (
-            "points0",
-            instance,
-            polyMesh::meshSubDir,
-            mesh,
-            IOobject::MUST_READ,
-            IOobject::NO_WRITE,
-            false
-        );
-
-        if (io.typeHeaderOk<pointIOField>())
-        {
-            return io;
-        }
-        else
-        {
-            // Copy of original mesh points
 
-            return
-                IOobject
-                (
-                    "points",
-                    instance,
-                    polyMesh::meshSubDir,
-                    mesh,
-                    IOobject::MUST_READ,
-                    IOobject::NO_WRITE,
-                    false
-                );
-        }
-    }
+    return io;
 }