diff --git a/applications/solvers/basic/laplacianFoam/overLaplacianDyMFoam/write.H b/applications/solvers/basic/laplacianFoam/overLaplacianDyMFoam/write.H
index 47aa182c0a986f6ca07a494623e4d59ae792b6d9..6b14ba49955810d81208f587331c05ac991b0f70 100644
--- a/applications/solvers/basic/laplacianFoam/overLaplacianDyMFoam/write.H
+++ b/applications/solvers/basic/laplacianFoam/overLaplacianDyMFoam/write.H
@@ -1,4 +1,4 @@
-    if (runTime.outputTime())
+    if (runTime.writeTime())
     {
         volVectorField gradT(fvc::grad(T));
 
diff --git a/applications/solvers/combustion/PDRFoam/PDRFoam.C b/applications/solvers/combustion/PDRFoam/PDRFoam.C
index 2511b8da1237bd2caa04145359b416c48dcdcd93..41500249940fff736e7ae64f301d5d9750311c16 100644
--- a/applications/solvers/combustion/PDRFoam/PDRFoam.C
+++ b/applications/solvers/combustion/PDRFoam/PDRFoam.C
@@ -115,7 +115,7 @@ int main(int argc, char *argv[])
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
         Info<< "\n\nTime = " << runTime.timeName() << endl;
 
         #include "rhoEqn.H"
diff --git a/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C b/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C
index 48a9aaf5c86bc36ec845bc0c170a709c8ad2eca8..ef1d103b98ec091b6e359ca744ee121a2fe43582 100644
--- a/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C
+++ b/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C
@@ -101,8 +101,8 @@ int main(int argc, char *argv[])
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
-        // Indicators for refinement. Note: before runTime++
-        // only for post-processing reasons.
+        // Indicators for refinement.
+        // Note: before ++runTime only for post-processing reasons.
         tmp<volScalarField> tmagGradP = mag(fvc::grad(p));
         volScalarField normalisedGradP
         (
@@ -112,7 +112,7 @@ int main(int argc, char *argv[])
         normalisedGradP.writeOpt() = IOobject::AUTO_WRITE;
         tmagGradP.clear();
 
-        runTime++;
+        ++runTime;
 
         Info<< "\n\nTime = " << runTime.timeName() << endl;
 
diff --git a/applications/solvers/combustion/XiFoam/XiDyMFoam/XiDyMFoam.C b/applications/solvers/combustion/XiFoam/XiDyMFoam/XiDyMFoam.C
index b6fda29be3406d8c76668b62dd1a04f42c0ece97..2b4dc4f107ca7139d3afe96a26b951758ac31460 100644
--- a/applications/solvers/combustion/XiFoam/XiDyMFoam/XiDyMFoam.C
+++ b/applications/solvers/combustion/XiFoam/XiDyMFoam/XiDyMFoam.C
@@ -107,7 +107,7 @@ int main(int argc, char *argv[])
             #include "compressibleCourantNo.H"
             #include "setDeltaT.H"
 
-            runTime++;
+            ++runTime;
 
             Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/combustion/XiFoam/XiEngineFoam/XiEngineFoam.C b/applications/solvers/combustion/XiFoam/XiEngineFoam/XiEngineFoam.C
index 6ac9443f4c0899ebda14344d167039c288de6a82..4c9c461d5da48bac5907a76f7446386fbf822bb1 100644
--- a/applications/solvers/combustion/XiFoam/XiEngineFoam/XiEngineFoam.C
+++ b/applications/solvers/combustion/XiFoam/XiEngineFoam/XiEngineFoam.C
@@ -95,7 +95,7 @@ int main(int argc, char *argv[])
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Crank angle = " << runTime.theta() << " CA-deg" << endl;
 
diff --git a/applications/solvers/combustion/XiFoam/XiFoam.C b/applications/solvers/combustion/XiFoam/XiFoam.C
index 34c42e7d12f1ec2571bce885f5e02be8f0032da7..069c481eb5f75a4bd26b0a4c1790239ce9a893aa 100644
--- a/applications/solvers/combustion/XiFoam/XiFoam.C
+++ b/applications/solvers/combustion/XiFoam/XiFoam.C
@@ -92,7 +92,7 @@ int main(int argc, char *argv[])
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
         #include "rhoEqn.H"
diff --git a/applications/solvers/combustion/chemFoam/chemFoam.C b/applications/solvers/combustion/chemFoam/chemFoam.C
index aa074eb3812d8542aba64f326075b32845e01775..c053395cd0d9238325b038c511d7ff9017c6a7f2 100644
--- a/applications/solvers/combustion/chemFoam/chemFoam.C
+++ b/applications/solvers/combustion/chemFoam/chemFoam.C
@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
 
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
         #include "solveChemistry.H"
diff --git a/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C b/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C
index c1e4d165290c7eb6ede61ab5f0f75e9b6508d311..cd1f853c254bc4f6a5373e3004e6b3de8f04f834 100644
--- a/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C
+++ b/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C
@@ -74,7 +74,7 @@ int main(int argc, char *argv[])
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Engine time = " << runTime.theta() << runTime.unit()
             << endl;
diff --git a/applications/solvers/combustion/fireFoam/fireFoam.C b/applications/solvers/combustion/fireFoam/fireFoam.C
index 199d4103a38f053cb068ab778f926f51e329fa9a..0559abf21eda93a921525b3eddf8bd33a41a80d8 100644
--- a/applications/solvers/combustion/fireFoam/fireFoam.C
+++ b/applications/solvers/combustion/fireFoam/fireFoam.C
@@ -79,7 +79,7 @@ int main(int argc, char *argv[])
         #include "setMultiRegionDeltaT.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/combustion/reactingFoam/reactingFoam.C b/applications/solvers/combustion/reactingFoam/reactingFoam.C
index 2a15a666e604e7ead2ca0ea150241ed28efb766c..0092fe97a5fcfd08cdac69d48666f4c993e9eb3e 100644
--- a/applications/solvers/combustion/reactingFoam/reactingFoam.C
+++ b/applications/solvers/combustion/reactingFoam/reactingFoam.C
@@ -85,7 +85,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C
index f46cbc1b576d2c11e698cdb76eaa7bc5298506d7..cca3dd36ddd75e8645d7e419edb7f75837487af5 100644
--- a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C
+++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C
@@ -85,7 +85,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C
index 37adbcc4c0cb4de92e849afcf5b458e10ab48b1e..bc47c57f850aae5cce99ab5ec42e468fc147fef9 100644
--- a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C
+++ b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C
@@ -87,7 +87,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C b/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C
index 35469637d13410cfe670ef322b7d1b5f3387c16f..f30c7784880b8bac2c6cffacbea77c5dd75843cb 100644
--- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C
+++ b/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C
@@ -76,7 +76,7 @@ int main(int argc, char *argv[])
         #include "readTimeControls.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C b/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C
index 17dc6ab8e3415f763313e033cef7e756690ff1d8..89066b01c931807380c9811f7d433813ed02962c 100644
--- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C
+++ b/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C
@@ -160,7 +160,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/compressible/rhoPimpleAdiabaticFoam/rhoPimpleAdiabaticFoam.C b/applications/solvers/compressible/rhoPimpleAdiabaticFoam/rhoPimpleAdiabaticFoam.C
index 4fcdfdbc51072d1b5addde8d4c7fb0e41056ef97..1a21d32d225fdad0ddd008889459a2327fa5d8b8 100644
--- a/applications/solvers/compressible/rhoPimpleAdiabaticFoam/rhoPimpleAdiabaticFoam.C
+++ b/applications/solvers/compressible/rhoPimpleAdiabaticFoam/rhoPimpleAdiabaticFoam.C
@@ -81,7 +81,7 @@ int main(int argc, char *argv[])
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/compressible/rhoPimpleFoam/overRhoPimpleDyMFoam/overRhoPimpleDyMFoam.C b/applications/solvers/compressible/rhoPimpleFoam/overRhoPimpleDyMFoam/overRhoPimpleDyMFoam.C
index 0bbe9ca7de1c94387d1224729969ee3ff68fc276..14120c924da5292e15133850f420508d0918d78f 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/overRhoPimpleDyMFoam/overRhoPimpleDyMFoam.C
+++ b/applications/solvers/compressible/rhoPimpleFoam/overRhoPimpleDyMFoam/overRhoPimpleDyMFoam.C
@@ -101,7 +101,7 @@ int main(int argc, char *argv[])
                 #include "setDeltaT.H"
             }
 
-            runTime++;
+            ++runTime;
 
             Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
index 4be24dda47979df1ec378af2af32e7c91eb1543c..8ce729365b31159d28becb203c44aba4a5ca9f28 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
@@ -106,7 +106,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C
index 013dd4c3bb4400527a5451c61b2bda2d2b92ab18..748a455158f92a88bbf4c555cabaab70087be2c0 100644
--- a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C
+++ b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C
@@ -81,7 +81,7 @@ int main(int argc, char *argv[])
             #include "compressibleCourantNo.H"
             #include "setDeltaT.H"
 
-            runTime++;
+            ++runTime;
 
             Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/electromagnetics/magneticFoam/magneticFoam.C b/applications/solvers/electromagnetics/magneticFoam/magneticFoam.C
index 33af0292aea49fb215cf2be08efe29b1edbb1a28..5a7b067da53e9a4059b48ad35ebea6aba8994a5c 100644
--- a/applications/solvers/electromagnetics/magneticFoam/magneticFoam.C
+++ b/applications/solvers/electromagnetics/magneticFoam/magneticFoam.C
@@ -78,7 +78,7 @@ int main(int argc, char *argv[])
 
     Info<< "Calculating the magnetic field potential" << endl;
 
-    runTime++;
+    ++runTime;
 
     while (simple.correctNonOrthogonal())
     {
diff --git a/applications/solvers/finiteArea/liquidFilmFoam/liquidFilmFoam.C b/applications/solvers/finiteArea/liquidFilmFoam/liquidFilmFoam.C
index 31d049d2cb8b9611d5680a16ff16044051704dd4..2f57e0b7a17d6bbedc086d91dc48bc725bf1fd3f 100644
--- a/applications/solvers/finiteArea/liquidFilmFoam/liquidFilmFoam.C
+++ b/applications/solvers/finiteArea/liquidFilmFoam/liquidFilmFoam.C
@@ -67,7 +67,7 @@ int main(int argc, char *argv[])
         #include "capillaryCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
@@ -138,7 +138,7 @@ int main(int argc, char *argv[])
             Us.correctBoundaryConditions();
         }
 
-        if (runTime.outputTime())
+        if (runTime.writeTime())
         {
             vsm.mapToVolume(h, H.boundaryFieldRef());
             vsm.mapToVolume(Us, U.boundaryFieldRef());
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C
index eaeb49019c8b941c3e0273e3609842cbb0ca0d12..c4b8df08f1302c365986124cf63937296cd4d449 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C
@@ -84,7 +84,7 @@ int main(int argc, char *argv[])
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C
index a75c39d0f4076b59d41886514b5d5d325e5e8c32..39de4d66704bc845eada7287b41ef990a88ec8e3 100644
--- a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C
+++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C
@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
index 1bababea0949a52047b6664e119b72e9b14fd338..e1bf6692112d871fc0e2ada3e1aebb2bffa164dd 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
@@ -79,7 +79,7 @@ int main(int argc, char *argv[])
         #include "solidRegionDiffusionNo.H"
         #include "setMultiRegionDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/heatTransfer/thermoFoam/thermoFoam.C b/applications/solvers/heatTransfer/thermoFoam/thermoFoam.C
index 59a26dd5f78ec9e181b36c01b86ebaa9b9342303..ea210163c02dd37a25b5d02e9b22e9673de83da0 100644
--- a/applications/solvers/heatTransfer/thermoFoam/thermoFoam.C
+++ b/applications/solvers/heatTransfer/thermoFoam/thermoFoam.C
@@ -82,7 +82,7 @@ int main(int argc, char *argv[])
 
         while (runTime.run())
         {
-            runTime++;
+            ++runTime;
 
             Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/SRFPimpleFoam.C b/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/SRFPimpleFoam.C
index 9508c33934b68c61f65015a461bd79b7124f47b3..3fd55b434d1e6e84393ea21b77427eadd013b75f 100644
--- a/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/SRFPimpleFoam.C
+++ b/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/SRFPimpleFoam.C
@@ -69,7 +69,7 @@ int main(int argc, char *argv[])
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/overPimpleDyMFoam.C b/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/overPimpleDyMFoam.C
index 04d8d23bb66f4ff9f9e63e739f0f2b61a8c2095a..6fb63d031f93ad4f226aa4711af88b27aa35b334 100644
--- a/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/overPimpleDyMFoam.C
+++ b/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/overPimpleDyMFoam.C
@@ -84,7 +84,7 @@ int main(int argc, char *argv[])
 
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C
index 63898d21c39158788e7bdceccfd7ac8f021a3873..e12c04827ff4bebdf8a9ce0b0416c31e9da91e7d 100644
--- a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C
+++ b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C
@@ -104,7 +104,7 @@ int main(int argc, char *argv[])
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/DPMDyMFoam.C b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/DPMDyMFoam.C
index 93a9154464502473215a410daf7e14f53df74045..c1d24729214e0a9a006ac894ad4fcecbad5adae9 100644
--- a/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/DPMDyMFoam.C
+++ b/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/DPMDyMFoam.C
@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/lagrangian/DPMFoam/DPMFoam.C b/applications/solvers/lagrangian/DPMFoam/DPMFoam.C
index e0c4a06460e4a93208bbbbd231e55caf4395c09b..0ca222fa48c93c06de95bfb024321f2ec957e5e1 100644
--- a/applications/solvers/lagrangian/DPMFoam/DPMFoam.C
+++ b/applications/solvers/lagrangian/DPMFoam/DPMFoam.C
@@ -75,7 +75,7 @@ int main(int argc, char *argv[])
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
index 72f61c79b6054a05c88e3de1e2c0cec1fa42d355..a6f89528ab9aa59a1318c803eced14ce332364d8 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
+++ b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
@@ -89,7 +89,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
index 88f7e81b5ffd61287d0b097ff270ce1ba80e27e3..e8bf3113924930efb8046abf851f633be05694c5 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
+++ b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
@@ -90,7 +90,7 @@ int main(int argc, char *argv[])
             #include "setMultiRegionDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/lagrangian/sprayFoam/engineFoam/engineFoam.C b/applications/solvers/lagrangian/sprayFoam/engineFoam/engineFoam.C
index 1b7076e3a5c308ca2a2ebada4b7333564f211a2c..d1f28f1f00e8a7d6b7cdd7e98aa0b6b3dcc3276a 100644
--- a/applications/solvers/lagrangian/sprayFoam/engineFoam/engineFoam.C
+++ b/applications/solvers/lagrangian/sprayFoam/engineFoam/engineFoam.C
@@ -75,7 +75,7 @@ int main(int argc, char *argv[])
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Engine time = " << runTime.theta() << runTime.unit() << endl;
 
diff --git a/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C b/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C
index 46268f82b2f6ab760cfc9b9cb61260567b5fd42b..13804c76cabec5993c966e7e8c509f81ea410cc0 100644
--- a/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C
+++ b/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C
@@ -83,7 +83,7 @@ int main(int argc, char *argv[])
             #include "compressibleCourantNo.H"
             #include "setDeltaT.H"
 
-            runTime++;
+            ++runTime;
 
             Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/lagrangian/sprayFoam/sprayFoam.C b/applications/solvers/lagrangian/sprayFoam/sprayFoam.C
index 9e3201c3d1409ef13a7bc21a44d7d0a83ee8e9e6..3a7ded9055ef1af7627236d205949e906ac6bcc0 100644
--- a/applications/solvers/lagrangian/sprayFoam/sprayFoam.C
+++ b/applications/solvers/lagrangian/sprayFoam/sprayFoam.C
@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
         #include "compressibleCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/MPPICInterFoam/MPPICInterFoam.C b/applications/solvers/multiphase/MPPICInterFoam/MPPICInterFoam.C
index 97bc27901491bafe7be2b7d9db7305ffa8973203..d88736572a260db7fe2a08c3ad70d5e6da066965 100644
--- a/applications/solvers/multiphase/MPPICInterFoam/MPPICInterFoam.C
+++ b/applications/solvers/multiphase/MPPICInterFoam/MPPICInterFoam.C
@@ -98,7 +98,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/cavitatingDyMFoam.C b/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/cavitatingDyMFoam.C
index 68e106b9f4264ce76040bb728e0ac5d3c8d4e799..71012644e72ed0a4d6d18a7cb9b5f67f8c41fac5 100644
--- a/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/cavitatingDyMFoam.C
+++ b/applications/solvers/multiphase/cavitatingFoam/cavitatingDyMFoam/cavitatingDyMFoam.C
@@ -74,7 +74,7 @@ int main(int argc, char *argv[])
             #include "CourantNo.H"
             #include "setDeltaT.H"
 
-            runTime++;
+            ++runTime;
 
             Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C b/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C
index 99666a3531d91149acf8d47366be6e829efdebb6..5dcea1f0c173fc9bc9cd97c181626bccb808a1ab 100644
--- a/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C
+++ b/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C
@@ -69,7 +69,7 @@ int main(int argc, char *argv[])
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
         // --- Pressure-velocity PIMPLE corrector loop
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
index 816c49544383eddc7dd26f16def9c18b7948e088..26858eea900035ca0412e4bf30530fcf87a1ee4a 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
@@ -94,7 +94,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/compressibleInterFilmFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/compressibleInterFilmFoam.C
index 6ebb641b9cd1c95171121bccf617d28365ecc3c9..1d169e30d4bf739d34bc6eb45b3291023c1106f3 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/compressibleInterFilmFoam.C
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/compressibleInterFilmFoam.C
@@ -97,7 +97,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C
index 6364a92e8277fcdfa86d3003456a2ccd8c6fccdb..7604768d8d1ae374a16bef573a2f4456e7eb3ecd 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C
@@ -97,7 +97,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C
index c3d36e4267d4639cdf65fabcaaf08d1895485632..fef72cbb7af38e948511389dc7a214fd28b7dd13 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C
@@ -75,7 +75,7 @@ int main(int argc, char *argv[])
         #include "alphaCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/driftFluxFoam/driftFluxFoam.C b/applications/solvers/multiphase/driftFluxFoam/driftFluxFoam.C
index d2335cba937d52e6052d412021642ca3e8a578bf..6034716845992b2d70e85d33e7fd044e2b646292 100644
--- a/applications/solvers/multiphase/driftFluxFoam/driftFluxFoam.C
+++ b/applications/solvers/multiphase/driftFluxFoam/driftFluxFoam.C
@@ -80,7 +80,7 @@ int main(int argc, char *argv[])
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/icoReactingMultiphaseInterFoam.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/icoReactingMultiphaseInterFoam.C
index bef0a8d000647663a52fbf9c41d9f8f82422188c..a3de274602b1453a747719f80b8d382ce68d735a 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/icoReactingMultiphaseInterFoam.C
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/icoReactingMultiphaseInterFoam.C
@@ -83,7 +83,7 @@ int main(int argc, char *argv[])
         #include "alphaCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/interCondensatingEvaporatingFoam.C b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/interCondensatingEvaporatingFoam.C
index b3350d335002eab679d82a036d69fbdf8994f81b..6e28f57f5d68dc54f3013ce340477a67d5342a39 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/interCondensatingEvaporatingFoam.C
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/interCondensatingEvaporatingFoam.C
@@ -85,7 +85,7 @@ int main(int argc, char *argv[])
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/interFoam/interFoam.C b/applications/solvers/multiphase/interFoam/interFoam.C
index 23bba65dbb282de2337f7cac684451e1c9be22ea..5b8d2e8b3e54706b2a23db799127037f5d8ff563 100644
--- a/applications/solvers/multiphase/interFoam/interFoam.C
+++ b/applications/solvers/multiphase/interFoam/interFoam.C
@@ -92,7 +92,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C b/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
index b0db0a92a89e95c6eaba27967c7abfc5edb08f78..a065444dde15bd436ee2a8509a3e52cc5ec2841e 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
@@ -90,7 +90,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/interFoam/overInterDyMFoam/correctPhi.H b/applications/solvers/multiphase/interFoam/overInterDyMFoam/correctPhi.H
index a7fe042a8b43cce233cf8bfc7ab88e4e1843add7..a6da0b4de1f54b1b41085250492ae5c34bda9f31 100644
--- a/applications/solvers/multiphase/interFoam/overInterDyMFoam/correctPhi.H
+++ b/applications/solvers/multiphase/interFoam/overInterDyMFoam/correctPhi.H
@@ -133,7 +133,7 @@
         }
     }
 
-    //if (runTime.outputTime())
+    //if (runTime.writeTime())
     //{
     //    volScalarField("contPhiPcorr", fvc::div(phi)).write();
     //    pcorr.write();
diff --git a/applications/solvers/multiphase/interFoam/overInterDyMFoam/overInterDyMFoam.C b/applications/solvers/multiphase/interFoam/overInterDyMFoam/overInterDyMFoam.C
index 4ce1875beed325212bc3c8e2f953077dd2f10f86..371e253f562b83274a9e67c829ce33fee4798c92 100644
--- a/applications/solvers/multiphase/interFoam/overInterDyMFoam/overInterDyMFoam.C
+++ b/applications/solvers/multiphase/interFoam/overInterDyMFoam/overInterDyMFoam.C
@@ -118,7 +118,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/interIsoFoam/interIsoFoam.C b/applications/solvers/multiphase/interIsoFoam/interIsoFoam.C
index 1593cae755a79f4fbf2a8b2b5257687d7fbf1a55..b7d12f5741518aa1b46969e9a55a9c561dcab9cb 100644
--- a/applications/solvers/multiphase/interIsoFoam/interIsoFoam.C
+++ b/applications/solvers/multiphase/interIsoFoam/interIsoFoam.C
@@ -93,7 +93,7 @@ int main(int argc, char *argv[])
         #include "alphaCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
index ccd301faacd59b5a229957e22aad3cd72e0cd208..87e960fd6371e97080d812b1a79b5d9dfaad3054 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
@@ -104,7 +104,7 @@ int main(int argc, char *argv[])
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
index d28c5cdca3729416079d93a44962d67613e85bf8..2fe1e45038eea9b871f4d509739398c3e1798aba 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
@@ -80,7 +80,7 @@ int main(int argc, char *argv[])
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C
index d52c2234bc87c43fe48ae4fb3ff7a896655881f0..4d42facea1ff9bb94a5e805132d398b9c7c1574d 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C
@@ -86,7 +86,7 @@ int main(int argc, char *argv[])
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
         // --- Pressure-velocity PIMPLE corrector loop
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C
index 3f61b3f82c475c82c0ed864511a8d0d2ea28a90e..478dcccdb17d442bb7b3aabaee2690e92893e67d 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C
+++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C
@@ -78,7 +78,7 @@ int main(int argc, char *argv[])
         #include "alphaCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/potentialFreeSurfaceDyMFoam.C b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/potentialFreeSurfaceDyMFoam.C
index b1a920fdae839e00f1c6b914b19a3620d7cfda0f..9c0bb8d4c3cc54060fe76e6e1b12b24c05122c7b 100644
--- a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/potentialFreeSurfaceDyMFoam.C
+++ b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/potentialFreeSurfaceDyMFoam.C
@@ -91,7 +91,7 @@ int main(int argc, char *argv[])
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C
index e5e9a1af0b07ce7f92b74ee037b6de64cd80259b..e7502f67e068777251e0ee1511360ca5acfcffd2 100644
--- a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C
+++ b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C
@@ -70,7 +70,7 @@ int main(int argc, char *argv[])
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/reactingMultiphaseEulerFoam.C b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/reactingMultiphaseEulerFoam.C
index 1dfdc66ab97a354e98fd8505271cb049ca0f669e..4eeaa5ab1f26549e0f893370252467f2e25efa0b 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/reactingMultiphaseEulerFoam.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/reactingMultiphaseEulerFoam.C
@@ -101,7 +101,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
         // --- Pressure-velocity PIMPLE corrector loop
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
index 244e3ed0cba2ff3c3efb7d97ba1a1dda38948a5f..c4c49f3a09c7954c28d38bec961ec29978293d46 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
@@ -135,7 +135,7 @@ int main(int argc, char *argv[])
             #include "setDeltaT.H"
         }
 
-        runTime++;
+        ++runTime;
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
         // --- Pressure-velocity PIMPLE corrector loop
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
index 70fb04d64af76ed223a050ea2b744d434a998bff..0df1d48c5fac45af92e7b240621d0dbdc97cb221 100644
--- a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
@@ -71,7 +71,7 @@ int main(int argc, char *argv[])
         #include "alphaCourantNo.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
index 244840664495e78e3fc7f17129ca9af5964ca904..9ad83f527587abcea4b29b30daed1e5b00a60e7c 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
@@ -83,7 +83,7 @@ int main(int argc, char *argv[])
         #include "CourantNos.H"
         #include "setDeltaT.H"
 
-        runTime++;
+        ++runTime;
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
         // --- Pressure-velocity PIMPLE corrector loop
diff --git a/applications/test/GAMGAgglomeration/Test-GAMGAgglomeration.C b/applications/test/GAMGAgglomeration/Test-GAMGAgglomeration.C
index 0b867156c43d963688b97867571da095d3b39c5d..423709d6cd88abdc56a5b7301ec2146e45689af5 100644
--- a/applications/test/GAMGAgglomeration/Test-GAMGAgglomeration.C
+++ b/applications/test/GAMGAgglomeration/Test-GAMGAgglomeration.C
@@ -70,7 +70,7 @@ int main(int argc, char *argv[])
     labelList cellToCoarse(identity(mesh.nCells()));
     labelListList coarseToCell(invertOneToMany(mesh.nCells(), cellToCoarse));
 
-    runTime++;
+    ++runTime;
 
     // Write initial agglomeration
     {
@@ -103,7 +103,7 @@ int main(int argc, char *argv[])
 
     for (label level = 0; level < agglom.size(); level++)
     {
-        runTime++;
+        ++runTime;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/test/parallelOverset/laplacianDyMFoam.C b/applications/test/parallelOverset/laplacianDyMFoam.C
index 88b20fa3382ab62d9bd927d076caee08364b7f40..075930ef83a5158c69383dac7d300ea98a51c2ce 100644
--- a/applications/test/parallelOverset/laplacianDyMFoam.C
+++ b/applications/test/parallelOverset/laplacianDyMFoam.C
@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
 
     Info<< "\nCorrecting boundary conditions on " << T.name() << nl << endl;
 
-    runTime++;
+    ++runTime;
 
     Info<< "Time = " << runTime.timeName() << nl << endl;
 
diff --git a/applications/test/parallelOverset/write.H b/applications/test/parallelOverset/write.H
index 47aa182c0a986f6ca07a494623e4d59ae792b6d9..6b14ba49955810d81208f587331c05ac991b0f70 100644
--- a/applications/test/parallelOverset/write.H
+++ b/applications/test/parallelOverset/write.H
@@ -1,4 +1,4 @@
-    if (runTime.outputTime())
+    if (runTime.writeTime())
     {
         volVectorField gradT(fvc::grad(T));
 
diff --git a/applications/test/passiveParticle/Test-passiveParticle.C b/applications/test/passiveParticle/Test-passiveParticle.C
index 23680dc5dcda94da1a5799d8b3aaf19160993a07..947bd726850e3e5d560c5d8bba535c32be84dc7f 100644
--- a/applications/test/passiveParticle/Test-passiveParticle.C
+++ b/applications/test/passiveParticle/Test-passiveParticle.C
@@ -67,7 +67,7 @@ int main(int argc, char *argv[])
 
         runTime.printExecutionTime(Info);
 
-        runTime++;
+        ++runTime;
         Pout<< "Writing particles to time " << runTime.timeName() << endl;
         particles.write();
     }
diff --git a/applications/test/timeSelector/Make/files b/applications/test/timeSelector/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..e20abc02523f2c8ea82946a57639c3e66bd07091
--- /dev/null
+++ b/applications/test/timeSelector/Make/files
@@ -0,0 +1,3 @@
+Test-timeSelector.C
+
+EXE = $(FOAM_USER_APPBIN)/Test-timeSelector
diff --git a/applications/test/timeSelector/Make/options b/applications/test/timeSelector/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..1f502ad153cfa3914fc7f4a23ca520c6c8dddd6a
--- /dev/null
+++ b/applications/test/timeSelector/Make/options
@@ -0,0 +1 @@
+/* EXE_INC = */
diff --git a/src/OpenFOAM/db/Time/findTimes.C b/applications/test/timeSelector/Test-timeSelector.C
similarity index 55%
rename from src/OpenFOAM/db/Time/findTimes.C
rename to applications/test/timeSelector/Test-timeSelector.C
index 52dcf50dcc0c145daff82078cbcd4fc0b64a7e9f..dd025fa952c1938737b2fb493c25610a1c665504 100644
--- a/src/OpenFOAM/db/Time/findTimes.C
+++ b/applications/test/timeSelector/Test-timeSelector.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2018 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,26 +22,65 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Description
-    Searches the current case directory for valid times
-    and sets the time list to these.
-    This is done if a times File does not exist.
-
+    Test TimePaths and timeSelectop
 \*---------------------------------------------------------------------------*/
 
-#include "Time.H"
-#include "OSspecific.H"
-#include "StringStream.H"
+#include "argList.H"
+#include "IOstreams.H"
+#include "TimePaths.H"
+#include "timeSelector.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+using namespace Foam;
 
-Foam::instantList Foam::Time::findTimes
-(
-    const fileName& directory,
-    const word& constantName
-)
+bool print(const instantList& instants)
 {
-    return fileHandler().findTimes(directory, constantName);
+    if (instants.empty())
+    {
+        Info<<"    none" << nl << nl;
+        return false;
+    }
+
+    Info <<"(" << nl;
+
+    for (const instant& t : instants)
+    {
+        Info<<"    " << t << nl;
+    }
+
+    Info<<")" << nl << nl;
+
+    return true;
 }
 
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+//  Main program:
+
+int main(int argc, char *argv[])
+{
+    argList::addNote("Test timeSelector");
+
+    timeSelector::addOptions(true, true);
+    argList::noLibs();
+    argList::noFunctionObjects();
+
+    #include "setRootCase.H"
+
+    autoPtr<TimePaths> timePaths;
+
+    instantList times(TimePaths(args).times());
+
+    Info<<"Available times" << nl;
+
+    if (print(times))
+    {
+        times = timeSelector::select(times, args);
+
+        Info<< "Selected times" << nl;
+        print(times);
+    }
+
+    return 0;
+}
+
 // ************************************************************************* //
diff --git a/applications/test/wallDist/Test-wallDist.C b/applications/test/wallDist/Test-wallDist.C
index 831c3120051024fc87e1b6414e8a4abbde0d4299..01cadb89ce0250a6571f0ba2053b635ae276fc25 100644
--- a/applications/test/wallDist/Test-wallDist.C
+++ b/applications/test/wallDist/Test-wallDist.C
@@ -57,7 +57,7 @@ int main(int argc, char *argv[])
     const volScalarField& y = wallDist::New(mesh).y();
     y.write();
 
-    runTime++;
+    ++runTime;
 
     Info<< "Time now = " << runTime.timeName() << endl;
 
diff --git a/applications/utilities/mesh/advanced/PDRMesh/PDRMesh.C b/applications/utilities/mesh/advanced/PDRMesh/PDRMesh.C
index 5c42c08107ed83cbd3f11c438e451ba43c50b00d..549f6e58b0585e338af99b572072bbdda8d0b93d 100644
--- a/applications/utilities/mesh/advanced/PDRMesh/PDRMesh.C
+++ b/applications/utilities/mesh/advanced/PDRMesh/PDRMesh.C
@@ -1021,7 +1021,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
 
     Info<< "Writing mesh without blockedCells to time " << runTime.value()
@@ -1157,7 +1157,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
 
     // Change the mesh. Change points directly (no inflation).
diff --git a/applications/utilities/mesh/advanced/collapseEdges/collapseEdges.C b/applications/utilities/mesh/advanced/collapseEdges/collapseEdges.C
index 05e77ddc3b5d1c13e39d5203e8470e2f0732e93e..ea34ec2426386745a6ac8c46c32b5f93ec37dd67 100644
--- a/applications/utilities/mesh/advanced/collapseEdges/collapseEdges.C
+++ b/applications/utilities/mesh/advanced/collapseEdges/collapseEdges.C
@@ -240,7 +240,7 @@ int main(int argc, char *argv[])
         // Write resulting mesh
         if (!overwrite)
         {
-            runTime++;
+            ++runTime;
         }
         else
         {
diff --git a/applications/utilities/mesh/advanced/combinePatchFaces/combinePatchFaces.C b/applications/utilities/mesh/advanced/combinePatchFaces/combinePatchFaces.C
index 20db80ffa04ec3ea4ce959af5db89124e0400340..3ccc8fd094bbf3fc4c118ba3f05602b4cdfd38ab 100644
--- a/applications/utilities/mesh/advanced/combinePatchFaces/combinePatchFaces.C
+++ b/applications/utilities/mesh/advanced/combinePatchFaces/combinePatchFaces.C
@@ -409,7 +409,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
 
 
diff --git a/applications/utilities/mesh/advanced/modifyMesh/modifyMesh.C b/applications/utilities/mesh/advanced/modifyMesh/modifyMesh.C
index e2471832425b888c0dabb81ee526ce8ff97121bf..29e42ea2fd4b75ece13ea7c44a432bb7199e7ed7 100644
--- a/applications/utilities/mesh/advanced/modifyMesh/modifyMesh.C
+++ b/applications/utilities/mesh/advanced/modifyMesh/modifyMesh.C
@@ -554,7 +554,7 @@ int main(int argc, char *argv[])
 
         if (!overwrite)
         {
-            runTime++;
+            ++runTime;
         }
         else
         {
@@ -630,7 +630,7 @@ int main(int argc, char *argv[])
 
         if (!overwrite)
         {
-            runTime++;
+            ++runTime;
         }
         else
         {
@@ -675,7 +675,7 @@ int main(int argc, char *argv[])
 
         if (!overwrite)
         {
-            runTime++;
+            ++runTime;
         }
         else
         {
diff --git a/applications/utilities/mesh/advanced/refineHexMesh/refineHexMesh.C b/applications/utilities/mesh/advanced/refineHexMesh/refineHexMesh.C
index 6901fcd8dab33e295a7faef2506b000b395af159..ff9f3be692773c6364856eb4fdb2a4779389c235 100644
--- a/applications/utilities/mesh/advanced/refineHexMesh/refineHexMesh.C
+++ b/applications/utilities/mesh/advanced/refineHexMesh/refineHexMesh.C
@@ -167,7 +167,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
 
     // Create mesh, return map from old to new mesh.
diff --git a/applications/utilities/mesh/advanced/refineWallLayer/refineWallLayer.C b/applications/utilities/mesh/advanced/refineWallLayer/refineWallLayer.C
index 256b84ee106b3916c33618f4b7425e0f0ad32b14..44ac8c0e26e31e50a2ae0ad89ac2a736a55410f6 100644
--- a/applications/utilities/mesh/advanced/refineWallLayer/refineWallLayer.C
+++ b/applications/utilities/mesh/advanced/refineWallLayer/refineWallLayer.C
@@ -220,7 +220,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
 
     autoPtr<mapPolyMesh> morphMap = meshMod.changeMesh(mesh, false);
diff --git a/applications/utilities/mesh/advanced/removeFaces/removeFaces.C b/applications/utilities/mesh/advanced/removeFaces/removeFaces.C
index a590b8bc353a582f865dc74bf4a85ef1da5a6d33..68ed25c921f26ac0c56b106ff6977689da9d2712 100644
--- a/applications/utilities/mesh/advanced/removeFaces/removeFaces.C
+++ b/applications/utilities/mesh/advanced/removeFaces/removeFaces.C
@@ -170,7 +170,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
     else
     {
diff --git a/applications/utilities/mesh/advanced/splitCells/splitCells.C b/applications/utilities/mesh/advanced/splitCells/splitCells.C
index 8328bd429b3d7f688e1f02f7104493f787aabd7f..ee1d02e57dd37f1515b715b7b9c9662ff2039153 100644
--- a/applications/utilities/mesh/advanced/splitCells/splitCells.C
+++ b/applications/utilities/mesh/advanced/splitCells/splitCells.C
@@ -682,7 +682,7 @@ int main(int argc, char *argv[])
 
         if (!overwrite)
         {
-            runTime++;
+            ++runTime;
         }
 
         autoPtr<mapPolyMesh> morphMap = meshMod.changeMesh(mesh, false);
diff --git a/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C
index 1bf2ee31385b6cef40eb5e88e6d1a029d5cc72bf..87cdf6b3e86191773b88d771dfa1065a5fe28993 100644
--- a/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C
+++ b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C
@@ -1647,7 +1647,7 @@ int main(int argc, char *argv[])
     word meshInstance;
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
         meshInstance = runTime.timeName();
     }
     else
diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/foamyHexMesh.C b/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/foamyHexMesh.C
index d8a757c8eb0e17f7ed67ef32bd5cbe29006d7fb4..e9c4f6c8eadf9f5decd222df66c72060ebb9c250 100644
--- a/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/foamyHexMesh.C
+++ b/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/foamyHexMesh.C
@@ -128,7 +128,7 @@ int main(int argc, char *argv[])
     {
         mesh.initialiseForConformation();
 
-        runTime++;
+        ++runTime;
 
         mesh.writeMesh(runTime.timeName());
     }
@@ -138,7 +138,7 @@ int main(int argc, char *argv[])
 
         while (runTime.run())
         {
-            runTime++;
+            ++runTime;
 
             Info<< nl << "Time = " << runTime.timeName() << endl;
 
diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/foamyHexMeshBackgroundMesh.C b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/foamyHexMeshBackgroundMesh.C
index f916acb3a51475eae2db83ab4e83eeef697b227d..c94312d592d26fcb94bcb292209376b4860fc55b 100644
--- a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/foamyHexMeshBackgroundMesh.C
+++ b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/foamyHexMeshBackgroundMesh.C
@@ -571,7 +571,7 @@ int main(int argc, char *argv[])
 
     if (writeMesh)
     {
-        runTime++;
+        ++runTime;
         Info<< "Writing mesh to " << runTime.timeName() << endl;
         backgroundMesh.mesh().write();
     }
diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/foamyQuadMesh.C b/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/foamyQuadMesh.C
index 367e554b3b82963c547d52e33307fbaf1bb55cfe..b2218d48d8b7238d2dccf2111e671edb9dc5f074 100644
--- a/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/foamyQuadMesh.C
+++ b/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/foamyQuadMesh.C
@@ -206,7 +206,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
     else
     {
diff --git a/applications/utilities/mesh/manipulation/attachMesh/attachMesh.C b/applications/utilities/mesh/manipulation/attachMesh/attachMesh.C
index 4413be2783b4d9ce3ffad4d93a5a50554df9dcc1..df8e5669c4b716494fccdb7f5f52d6d070443104 100644
--- a/applications/utilities/mesh/manipulation/attachMesh/attachMesh.C
+++ b/applications/utilities/mesh/manipulation/attachMesh/attachMesh.C
@@ -56,7 +56,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
 
     Info<< "Time = " << runTime.timeName() << nl
diff --git a/applications/utilities/mesh/manipulation/autoPatch/autoPatch.C b/applications/utilities/mesh/manipulation/autoPatch/autoPatch.C
index 3749162149c9adb71c2d2849753bd4c6580b38c9..af3f40c563ce58b41240df7198f5cb7b667ec0da 100644
--- a/applications/utilities/mesh/manipulation/autoPatch/autoPatch.C
+++ b/applications/utilities/mesh/manipulation/autoPatch/autoPatch.C
@@ -222,7 +222,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
 
 
diff --git a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C
index 52195b3c6fd3ac3d0cff2ef04ed69ef216de92cd..0b7de14dd51d69c62c9725c1ea1780cd5563adc5 100644
--- a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C
+++ b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C
@@ -832,7 +832,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
 
     // Change the mesh. Change points directly (no inflation).
diff --git a/applications/utilities/mesh/manipulation/createPatch/createPatch.C b/applications/utilities/mesh/manipulation/createPatch/createPatch.C
index 8055fdafb72b5ba18f1f59bf82209fe6939ce6ea..27cedb267fecd1fc71f16f2ec3458e1f514261c4 100644
--- a/applications/utilities/mesh/manipulation/createPatch/createPatch.C
+++ b/applications/utilities/mesh/manipulation/createPatch/createPatch.C
@@ -895,7 +895,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
     else
     {
diff --git a/applications/utilities/mesh/manipulation/mergeOrSplitBaffles/mergeOrSplitBaffles.C b/applications/utilities/mesh/manipulation/mergeOrSplitBaffles/mergeOrSplitBaffles.C
index 7e2b7fe3a2a596cf7ad4a650f1163c875d7228b0..d509c1f6027798f096f28168cdf1d77c54df88bb 100644
--- a/applications/utilities/mesh/manipulation/mergeOrSplitBaffles/mergeOrSplitBaffles.C
+++ b/applications/utilities/mesh/manipulation/mergeOrSplitBaffles/mergeOrSplitBaffles.C
@@ -443,7 +443,7 @@ int main(int argc, char *argv[])
 
         if (!overwrite)
         {
-            runTime++;
+            ++runTime;
         }
 
         // Change the mesh. No inflation.
@@ -513,7 +513,7 @@ int main(int argc, char *argv[])
 
         if (!overwrite)
         {
-            runTime++;
+            ++runTime;
         }
 
         // Change the mesh. No inflation.
diff --git a/applications/utilities/mesh/manipulation/mirrorMesh/mirrorMesh.C b/applications/utilities/mesh/manipulation/mirrorMesh/mirrorMesh.C
index 532113e6a03d79cdebef95f02b0aba2c48dae1ef..1262ac3fda54c4799ae9e9f918367754e576b079 100644
--- a/applications/utilities/mesh/manipulation/mirrorMesh/mirrorMesh.C
+++ b/applications/utilities/mesh/manipulation/mirrorMesh/mirrorMesh.C
@@ -76,7 +76,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
         mesh.setInstance(runTime.timeName());
     }
 
diff --git a/applications/utilities/mesh/manipulation/polyDualMesh/polyDualMeshApp.C b/applications/utilities/mesh/manipulation/polyDualMesh/polyDualMeshApp.C
index 1a1b0b6d3f209ca5613d91f7dc7a9ec979f71c5b..1ce829e03b421170b84f4076bd04b189e5876808 100644
--- a/applications/utilities/mesh/manipulation/polyDualMesh/polyDualMeshApp.C
+++ b/applications/utilities/mesh/manipulation/polyDualMesh/polyDualMeshApp.C
@@ -541,7 +541,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
     else
     {
diff --git a/applications/utilities/mesh/manipulation/refineMesh/refineMesh.C b/applications/utilities/mesh/manipulation/refineMesh/refineMesh.C
index f55d773b9bf0e23400b6f4ed2548a52fbdf5dded..6d56086b34b5e22d302a35723ff5ee1266bf184b 100644
--- a/applications/utilities/mesh/manipulation/refineMesh/refineMesh.C
+++ b/applications/utilities/mesh/manipulation/refineMesh/refineMesh.C
@@ -322,7 +322,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
 
 
diff --git a/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C b/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C
index 927704a5ed736b17ded745ddd3be2565aaf453f9..7301f82766b7acb7a72f61aa933efb9f987dc529 100644
--- a/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C
+++ b/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C
@@ -1050,7 +1050,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
 
 
diff --git a/applications/utilities/mesh/manipulation/splitMesh/splitMesh.C b/applications/utilities/mesh/manipulation/splitMesh/splitMesh.C
index bd55fcf2670c979c126599ec65ebdb03715f7e9c..d36630f75e9546aac491af67dc4682e7c3d42a35 100644
--- a/applications/utilities/mesh/manipulation/splitMesh/splitMesh.C
+++ b/applications/utilities/mesh/manipulation/splitMesh/splitMesh.C
@@ -267,7 +267,7 @@ int main(int argc, char *argv[])
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
     }
 
     splitter.attach();
diff --git a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C
index fb987cc1a07d8b775b7b862c636cc82ab6bd1078..7516435ab1af94b10235e45e6b254d11b6ecec4b 100644
--- a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C
+++ b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C
@@ -1944,7 +1944,7 @@ int main(int argc, char *argv[])
 
         if (!overwrite)
         {
-            runTime++;
+            ++runTime;
             mesh.setInstance(runTime.timeName());
         }
         else
@@ -1992,7 +1992,7 @@ int main(int argc, char *argv[])
 
         if (!overwrite)
         {
-            runTime++;
+            ++runTime;
         }
 
 
diff --git a/applications/utilities/mesh/manipulation/stitchMesh/stitchMesh.C b/applications/utilities/mesh/manipulation/stitchMesh/stitchMesh.C
index 09cdc1e212c9e9cef280fa453375ecf9b503a134..75d49263ef6af97a78478a8bd121d50f741e60e7 100644
--- a/applications/utilities/mesh/manipulation/stitchMesh/stitchMesh.C
+++ b/applications/utilities/mesh/manipulation/stitchMesh/stitchMesh.C
@@ -603,7 +603,7 @@ int main(int argc, char *argv[])
         // Advance time for intermediate results or only on final
         if (!overwrite && (intermediate || actioni == nActions))
         {
-            runTime++;
+            ++runTime;
         }
 
         // Execute all polyMeshModifiers
diff --git a/applications/utilities/mesh/manipulation/subsetMesh/subsetMesh.C b/applications/utilities/mesh/manipulation/subsetMesh/subsetMesh.C
index b655aceab7238b1d146ac0a7c894a3c8a3e9990f..565f048c5ba74b17e2157e11771d8e1d7d73069b 100644
--- a/applications/utilities/mesh/manipulation/subsetMesh/subsetMesh.C
+++ b/applications/utilities/mesh/manipulation/subsetMesh/subsetMesh.C
@@ -591,7 +591,7 @@ int main(int argc, char *argv[])
     }
     else
     {
-        runTime++;
+        ++runTime;
         subsetter.subMesh().setInstance(runTime.timeName());
     }
 
diff --git a/applications/utilities/miscellaneous/foamListTimes/foamListTimes.C b/applications/utilities/miscellaneous/foamListTimes/foamListTimes.C
index aff20e8df58ed25ab1a66046dccd399ef79ebc9f..513ae9d41a8f35c0ac151ee7836858fa66670e04 100644
--- a/applications/utilities/miscellaneous/foamListTimes/foamListTimes.C
+++ b/applications/utilities/miscellaneous/foamListTimes/foamListTimes.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2016-2018 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -29,25 +29,28 @@ Group
 
 Description
     List times using timeSelector.
-    To simplify parsing of the output, the normal banner information
-    is suppressed.
+    The normal banner information is suppressed.
 
 Usage
     \b foamListTimes [OPTION]
 
     Options:
+      - \par -processor
+        List times from processor0/ directory
+
       - \par -rm
         Remove selected time directories
 
-      - \par -processor
-        List times from processor0/ directory
+      - \par -verbose
+        Report progress during removal
 
 \*---------------------------------------------------------------------------*/
 
 #include "argList.H"
+#include "autoPtr.H"
 #include "profiling.H"
 #include "timeSelector.H"
-#include "Time.H"
+#include "TimePaths.H"
 
 using namespace Foam;
 
@@ -72,15 +75,24 @@ int main(int argc, char *argv[])
         "rm",
         "remove selected time directories"
     );
+    argList::addBoolOption
+    (
+        "verbose",
+        "report progress of -rm option"
+    );
     profiling::disable(); // Disable profiling (and its output)
 
     #include "setRootCase.H"
 
+    const bool removeFiles(args.found("rm"));
+    const bool verbose(args.found("verbose"));
+
+
     // Get times list from the master processor and subset based on
     // command-line options
 
     label nProcs = 0;
-    instantList timeDirs;
+    autoPtr<TimePaths> timePaths;
 
     if (args.found("processor"))
     {
@@ -94,47 +106,48 @@ int main(int argc, char *argv[])
                 << exit(FatalError);
         }
 
-        timeDirs = timeSelector::select
+        timePaths = autoPtr<TimePaths>::New
         (
-            Time
-            (
-                Time::controlDictName,
-                args.rootPath(),
-                args.caseName()/"processor0"
-            ).times(),
-            args
+            args.rootPath(),
+            args.caseName()/"processor0"
         );
     }
     else
     {
-        timeDirs = timeSelector::select
+        timePaths = autoPtr<TimePaths>::New
         (
-            Time
-            (
-                Time::controlDictName,
-                args.rootPath(),
-                args.caseName()
-            ).times(),
-            args
+            args.rootPath(),
+            args.caseName()
         );
     }
 
 
-    if (args.found("rm"))
+    const instantList timeDirs(timeSelector::select(timePaths->times(), args));
+
+    const label nTimes = timeDirs.size();
+
+    if (removeFiles)
     {
         if (nProcs)
         {
-            // Serr<< "Remove " << timeDirs.size()
-            //     << " processor time directories" << nl;
+            if (verbose)
+            {
+                Info<< "Removing " << nTimes
+                    << " processor time directories" << endl;
+            }
 
             forAllReverse(timeDirs, timei)
             {
-                fileName path
-                (
-                    args.path()
-                  / "processors"
-                  / timeDirs[timei].name()
-                );
+                const word& timeName = timeDirs[timei].name();
+
+                if (verbose)
+                {
+                    Info<< "    rm " << timeName
+                        << " [" << (nTimes - timei) << '/' << nTimes << ']'
+                        << endl;
+                }
+
+                fileName path(args.path()/"processors"/timeName);
 
                 rmDir(path, true);
 
@@ -143,8 +156,8 @@ int main(int argc, char *argv[])
                     path =
                     (
                         args.path()
-                      / (word("processor") + name(proci))
-                      / timeDirs[timei].name()
+                      / ("processor" + Foam::name(proci))
+                      / timeName
                     );
 
                     rmDir(path, true);
@@ -153,25 +166,36 @@ int main(int argc, char *argv[])
         }
         else
         {
-            // Serr<< "Remove " << timeDirs.size()
-            //     << " time directories" << nl;
+            if (verbose)
+            {
+                Info<< "Removing " << nTimes
+                    << " time directories" << endl;
+            }
 
             forAllReverse(timeDirs, timei)
             {
-                rmDir(args.path()/timeDirs[timei].name(), true);
+                const word& timeName = timeDirs[timei].name();
+
+                if (verbose)
+                {
+                    Info<< "    rm " << timeName
+                        << " [" << (nTimes - timei) << '/' << nTimes << ']'
+                        << endl;
+                }
+
+                rmDir(args.path()/timeName, true);
             }
         }
     }
     else
     {
-        forAll(timeDirs, timei)
+        for (const instant& t : timeDirs)
         {
-            Info<< timeDirs[timei].name() << nl;
+            Info<< t.name() << nl;
         }
         Info<< flush;
     }
 
-
     return 0;
 }
 
diff --git a/applications/utilities/miscellaneous/foamRestoreFields/foamRestoreFields.C b/applications/utilities/miscellaneous/foamRestoreFields/foamRestoreFields.C
index 9a7b3927c20a1156fc6239e22ab5b7693247cebe..2c2f27ac98f4080cc09deb57c3deadd064931510 100644
--- a/applications/utilities/miscellaneous/foamRestoreFields/foamRestoreFields.C
+++ b/applications/utilities/miscellaneous/foamRestoreFields/foamRestoreFields.C
@@ -56,10 +56,11 @@ Usage
 \*---------------------------------------------------------------------------*/
 
 #include "argList.H"
+#include "autoPtr.H"
 #include "profiling.H"
 #include "timeSelector.H"
 #include "Enum.H"
-#include "Time.H"
+#include "TimePaths.H"
 
 using namespace Foam;
 
@@ -292,7 +293,7 @@ int main(int argc, char *argv[])
     // command-line options
 
     label nProcs = 0;
-    wordList timeDirs;
+    autoPtr<TimePaths> timePaths;
 
     if (args.found("processor") && !Pstream::parRun())
     {
@@ -308,45 +309,33 @@ int main(int argc, char *argv[])
 
         // Obtain time directory names from "processor0/" only
 
-        timeDirs = ListOps::create<word>
+        timePaths = autoPtr<TimePaths>::New
         (
-            timeSelector::select
-            (
-                Time
-                (
-                    Time::controlDictName,
-                    args.rootPath(),
-                    args.caseName()/"processor0"
-                ).times(),
-                args
-            ),
-            [](const instant& t){ return t.name(); }
+            args.rootPath(),
+            args.caseName()/"processor0"
         );
     }
     else
     {
-        timeDirs = ListOps::create<word>
+        timePaths = autoPtr<TimePaths>::New
         (
-            timeSelector::select
-            (
-                Time(Time::controlDictName, args).times(),
-                args
-            ),
-            [](const instant& t){ return t.name(); }
+            args.rootPath(),
+            args.caseName()
         );
-
-        Pstream::scatter(timeDirs);
     }
 
+    const instantList timeDirs(timeSelector::select(timePaths->times(), args));
 
     if (timeDirs.empty())
     {
         Info<< "no times selected" << nl;
     }
 
-    for (const word& dirName : timeDirs)
+    for (const instant& t : timeDirs)
     {
-        Info<< "\nTime = " << dirName << nl;
+        const word& timeName = t.name();
+
+        Info<< "\nTime = " << timeName << nl;
 
         label count = 0;
 
@@ -354,7 +343,7 @@ int main(int argc, char *argv[])
         {
             const wordHashSet files
             (
-                getFiles(args.path()/"processor0", dirName)
+                getFiles(args.path()/"processor0", timeName)
             );
 
             for (label proci=0; proci < nProcs; ++proci)
@@ -362,7 +351,7 @@ int main(int argc, char *argv[])
                 count += restoreFields
                 (
                     method,
-                    args.path()/("processor" + Foam::name(proci))/dirName,
+                    args.path()/("processor" + Foam::name(proci))/timeName,
                     files,
                     targetNames
                 );
@@ -373,14 +362,14 @@ int main(int argc, char *argv[])
             wordList files;
             if (Pstream::master())
             {
-                files = getFiles(args.path(), dirName);
+                files = getFiles(args.path(), timeName);
             }
             Pstream::scatter(files);
 
             count += restoreFields
             (
                 method,
-                args.path()/dirName,
+                args.path()/timeName,
                 wordHashSet(files),
                 targetNames
             );
diff --git a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C
index e463f8d4933da6757962425327666b9e807a1e57..530fda227b5db3dc5fcef4c47e94b7aeb7921765 100644
--- a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C
+++ b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C
@@ -1156,7 +1156,7 @@ autoPtr<mapDistributePolyMesh> redistributeAndWrite
 
     if (!overwrite)
     {
-        runTime++;
+        ++runTime;
         mesh.setInstance(runTime.timeName());
     }
     else
diff --git a/applications/utilities/postProcessing/miscellaneous/engineCompRatio/engineCompRatio.C b/applications/utilities/postProcessing/miscellaneous/engineCompRatio/engineCompRatio.C
index f5d2261bc548eb7f957d88fab4b79ee3886e4296..707d1eaac2c10d4abebce04d881d3c77cfbe5d53 100644
--- a/applications/utilities/postProcessing/miscellaneous/engineCompRatio/engineCompRatio.C
+++ b/applications/utilities/postProcessing/miscellaneous/engineCompRatio/engineCompRatio.C
@@ -65,7 +65,7 @@ int main(int argc, char *argv[])
     {
         scalar t0 = runTime.userTimeToTime(ca0 - runTime.theta());
         runTime.setDeltaT(t0);
-        runTime++;
+        ++runTime;
         Info<< "CA = " << runTime.theta() << endl;
         mesh.move();
     }
@@ -76,7 +76,7 @@ int main(int argc, char *argv[])
     {
         scalar t1 = runTime.userTimeToTime(ca1 - runTime.theta());
         runTime.setDeltaT(t1);
-        runTime++;
+        ++runTime;
         Info<< "CA = " << runTime.theta() << endl;
         mesh.move();
     }
diff --git a/applications/utilities/surface/surfaceToPatch/surfaceToPatch.C b/applications/utilities/surface/surfaceToPatch/surfaceToPatch.C
index 2c8d782c489e728f3691b6321d8c78040ce50b63..2150671ca98ad693bdfc6023adf4e279424f58ea 100644
--- a/applications/utilities/surface/surfaceToPatch/surfaceToPatch.C
+++ b/applications/utilities/surface/surfaceToPatch/surfaceToPatch.C
@@ -324,7 +324,7 @@ int main(int argc, char *argv[])
         Info<< endl;
 
 
-        runTime++;
+        ++runTime;
 
         // Write resulting mesh
         Info<< "Writing modified mesh to time " << runTime.value() << endl;
diff --git a/etc/config.sh/completion_cache b/etc/config.sh/completion_cache
index 0f1f82049068bb0771c0b59375746e2323aa1763..f7b8ff395ba55b2d78cbefe2e465a9ed1750be49 100644
--- a/etc/config.sh/completion_cache
+++ b/etc/config.sh/completion_cache
@@ -84,7 +84,7 @@ _of_complete_cache_[foamDataToFluent]="-case -fileHandler -listScalarBCs -listVe
 _of_complete_cache_[foamDictionary]="-add -case -decomposeParDict -diff -diff-etc -entry -fileHandler -hostRoots -roots -set | -disableFunctionEntries -expand -includes -keywords -noFunctionObjects -parallel -remove -value -doc -doc-source -help -help-full"
 _of_complete_cache_[foamFormatConvert]="-case -decomposeParDict -fileHandler -hostRoots -listScalarBCs -listVectorBCs -region -roots -time | -constant -enableFunctionEntries -latestTime -listFunctionObjects -listRegisteredSwitches -listSwitches -listUnsetSwitches -newTimes -noConstant -noFunctionObjects -noZero -parallel -doc -doc-source -help -help-full"
 _of_complete_cache_[foamListRegions]="-case -fileHandler | -listFunctionObjects -listRegisteredSwitches -listSwitches -listUnsetSwitches -doc -doc-source -help -help-full"
-_of_complete_cache_[foamListTimes]="-case -fileHandler -time | -constant -latestTime -listFunctionObjects -listRegisteredSwitches -listSwitches -listUnsetSwitches -newTimes -noZero -processor -rm -withZero -doc -doc-source -help -help-full"
+_of_complete_cache_[foamListTimes]="-case -fileHandler -time | -constant -latestTime -listFunctionObjects -listRegisteredSwitches -listSwitches -listUnsetSwitches -newTimes -noZero -processor -rm -verbose -withZero -doc -doc-source -help -help-full"
 _of_complete_cache_[foamMeshToFluent]="-case -fileHandler | -listFunctionObjects -listRegisteredSwitches -listSwitches -listUnsetSwitches -noFunctionObjects -doc -doc-source -help -help-full"
 _of_complete_cache_[foamRestoreFields]="-case -decomposeParDict -fileHandler -hostRoots -method -roots -time | -constant -dry-run -latestTime -listFunctionObjects -listRegisteredSwitches -listSwitches -listUnsetSwitches -newTimes -noZero -parallel -processor -verbose -withZero -doc -doc-source -help -help-full"
 _of_complete_cache_[foamToEnsight]="-case -cellZone -decomposeParDict -faceZones -fields -fileHandler -hostRoots -listScalarBCs -listVectorBCs -name -patches -region -roots -time -width | -ascii -constant -latestTime -listFunctionObjects -listRegisteredSwitches -listSwitches -listUnsetSwitches -newTimes -noFunctionObjects -noLagrangian -noPatches -noZero -nodeValues -parallel -doc -doc-source -help -help-full"
diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files
index 208d2aba1c0872139347781095a9efddef17b1a0..11f4bb9bfd1b266c7677a33ee14a7226c61cd549 100644
--- a/src/OpenFOAM/Make/files
+++ b/src/OpenFOAM/Make/files
@@ -286,7 +286,6 @@ $(Time)/TimePaths.C
 $(Time)/TimeState.C
 $(Time)/Time.C
 $(Time)/TimeIO.C
-$(Time)/findTimes.C
 $(Time)/subCycleTime.C
 $(Time)/subLoopTime.C
 $(Time)/timeSelector.C
diff --git a/src/OpenFOAM/containers/Lists/ListOps/ListOps.H b/src/OpenFOAM/containers/Lists/ListOps/ListOps.H
index ed152b54140e638c1d48370f3808854a645e2dc8..cd7ae1cbae09828683bb96f4ec14aaa1a99969b1 100644
--- a/src/OpenFOAM/containers/Lists/ListOps/ListOps.H
+++ b/src/OpenFOAM/containers/Lists/ListOps/ListOps.H
@@ -244,21 +244,42 @@ void inplaceUniqueSort
 );
 
 
-//- Extract elements of List when select is true
-//  eg, to extract all selected elements:
+//- Extract elements of the input List when select is true.
+//
+//  \param select the bool-list selector, for which the operator[]
+//      returns true or false.  A labelHashSet can also be used since
+//      it satisfies these requirements
+//  \param input the list input values. Cannot be a FixedList since
+//      it doesn't resize.
+//  \param invert set as true to invert the selection logic
+//
+//  Eg, to extract all selected elements:
+//  \code
 //    subset<boolList, labelList>(selectedElems, list);
-//  Note a labelHashSet can also be used as the bool-list.
-//  Do not use FixedList for the input list, since it doesn't resize.
+//  \endcode
 template<class BoolListType, class ListType>
-ListType subset(const BoolListType& select, const ListType& input);
+ListType subset
+(
+    const BoolListType& select,
+    const ListType& input,
+    const bool invert=false
+);
 
-//- Inplace extract elements of List when select is true
-//  eg, to extract all selected elements:
-//    inplaceSubset<boolList, labelList>(selectedElems, list);
-//  Note a labelHashSet can also be used as the bool-list.
-//  Do not use FixedList for the input list, since it doesn't resize.
+//- Inplace extract elements of the input List when select is true.
+//
+//  \param select the bool-list selector, for which the operator[]
+//      returns true or false.  A labelHashSet can also be used since
+//      it satisfies these requirements
+//  \param input the list input values. Cannot be a FixedList since
+//      it doesn't resize.
+//  \param invert set as true to invert the selection logic
 template<class BoolListType, class ListType>
-void inplaceSubset(const BoolListType& select, ListType& input);
+void inplaceSubset
+(
+    const BoolListType& select,
+    ListType& input,
+    const bool invert=false
+);
 
 
 //- Copy a subset of the input list when predicate is true.
diff --git a/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C b/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C
index f4055b6c2900f3b3731040593645e7a906f59395..5d95a6a747037cce5654c05c11f01ac37faac3c9 100644
--- a/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C
+++ b/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C
@@ -474,7 +474,8 @@ template<class BoolListType, class ListType>
 ListType Foam::subset
 (
     const BoolListType& select,
-    const ListType& input
+    const ListType& input,
+    const bool invert
 )
 {
     const label len = input.size();
@@ -487,7 +488,7 @@ ListType Foam::subset
     label count = 0;
     for (label i=0; i < len; ++i)
     {
-        if (select[i])
+        if (select[i] ? !invert : invert)
         {
             output[count] = input[i];
             ++count;
@@ -503,7 +504,8 @@ template<class BoolListType, class ListType>
 void Foam::inplaceSubset
 (
     const BoolListType& select,
-    ListType& input
+    ListType& input,
+    const bool invert
 )
 {
     const label len = input.size();
@@ -513,7 +515,7 @@ void Foam::inplaceSubset
     label count = 0;
     for (label i=0; i < len; ++i)
     {
-        if (select[i])
+        if (select[i] ? !invert : invert)
         {
             if (count != i)
             {
diff --git a/src/OpenFOAM/db/Time/Time.C b/src/OpenFOAM/db/Time/Time.C
index e0a6cae7c51839352827646647f044c29d0d248f..9057cefbddd565feed2cc4a7692199146ec50353 100644
--- a/src/OpenFOAM/db/Time/Time.C
+++ b/src/OpenFOAM/db/Time/Time.C
@@ -156,23 +156,22 @@ void Foam::Time::setControls()
         // Search directory for valid time directories
         instantList timeDirs = findTimes(path(), constant());
 
+        const label nTimes = timeDirs.size();
+
         if (startFrom == "firstTime")
         {
-            if (timeDirs.size())
+            if (nTimes > 1 && timeDirs.first().name() == constant())
             {
-                if (timeDirs[0].name() == constant() && timeDirs.size() >= 2)
-                {
-                    startTime_ = timeDirs[1].value();
-                }
-                else
-                {
-                    startTime_ = timeDirs[0].value();
-                }
+                startTime_ = timeDirs[1].value();
+            }
+            else if (nTimes)
+            {
+                startTime_ = timeDirs.first().value();
             }
         }
         else if (startFrom == "latestTime")
         {
-            if (timeDirs.size())
+            if (nTimes)
             {
                 startTime_ = timeDirs.last().value();
             }
@@ -204,7 +203,7 @@ void Foam::Time::setControls()
         (
             precision_ = maxPrecision_;
             precision_ > oldPrecision;
-            precision_--
+            --precision_
         )
         {
             // Update the time formatting
@@ -407,12 +406,13 @@ void Foam::Time::setMonitoring(const bool forceProfiling)
 
 Foam::Time::Time
 (
-    const word& controlDictName,
+    const word& ctrlDictName,
     const fileName& rootPath,
     const fileName& caseName,
     const word& systemName,
     const word& constantName,
-    const bool enableFunctionObjects
+    const bool enableFunctionObjects,
+    const bool enableLibs
 )
 :
     TimePaths
@@ -432,7 +432,7 @@ Foam::Time::Time
     (
         IOobject
         (
-            controlDictName,
+            ctrlDictName,
             system(),
             *this,
             IOobject::MUST_READ_IF_MODIFIED,
@@ -456,10 +456,17 @@ Foam::Time::Time
     writeStreamOption_(IOstream::ASCII),
     graphFormat_("raw"),
     runTimeModifiable_(false),
-
-    functionObjects_(*this, enableFunctionObjects)
+    functionObjects_(*this, false)
 {
-    libs_.open(controlDict_, "libs");
+    if (enableFunctionObjects)
+    {
+        functionObjects_.on();
+    }
+
+    if (enableLibs)
+    {
+        libs_.open(controlDict_, "libs");
+    }
 
     // Explicitly set read flags on objectRegistry so anything constructed
     // from it reads as well (e.g. fvSolution).
@@ -472,22 +479,13 @@ Foam::Time::Time
 
 Foam::Time::Time
 (
-    const word& controlDictName,
+    const word& ctrlDictName,
     const argList& args,
     const word& systemName,
     const word& constantName
 )
 :
-    TimePaths
-    (
-        args.parRunControl().parRun(),
-        args.rootPath(),
-        args.distributed(),
-        args.globalCaseName(),
-        args.caseName(),
-        systemName,
-        constantName
-    ),
+    TimePaths(args, systemName, constantName),
 
     objectRegistry(*this),
 
@@ -498,7 +496,7 @@ Foam::Time::Time
     (
         IOobject
         (
-            controlDictName,
+            ctrlDictName,
             system(),
             *this,
             IOobject::MUST_READ_IF_MODIFIED,
@@ -522,18 +520,38 @@ Foam::Time::Time
     writeStreamOption_(IOstream::ASCII),
     graphFormat_("raw"),
     runTimeModifiable_(false),
-
-    functionObjects_
+    functionObjects_(*this, false)
+{
+    // Enable/disable functions
+    //
+    //  '-withFunctionObjects' exists and used = enable
+    //  '-noFunctionObjects' exists and used = disable
+    //  default: no functions if there is no way to enable/disable them
+    if
     (
-        *this,
         argList::validOptions.found("withFunctionObjects")
       ? args.found("withFunctionObjects")
       : argList::validOptions.found("noFunctionObjects")
       ? !args.found("noFunctionObjects")
       : false
     )
-{
-    libs_.open(controlDict_, "libs");
+    {
+        functionObjects_.on();
+    }
+
+    // Allow/disallow libs
+    //
+    //  '-no-libs' exists and used = disable
+    //  default: enable
+    if
+    (
+        argList::validOptions.found("no-libs")
+      ? !args.found("no-libs")
+      : true
+    )
+    {
+        libs_.open(controlDict_, "libs");
+    }
 
     // Explicitly set read flags on objectRegistry so anything constructed
     // from it reads as well (e.g. fvSolution).
@@ -553,7 +571,8 @@ Foam::Time::Time
     const fileName& caseName,
     const word& systemName,
     const word& constantName,
-    const bool enableFunctionObjects
+    const bool enableFunctionObjects,
+    const bool enableLibs
 )
 :
     TimePaths
@@ -599,9 +618,18 @@ Foam::Time::Time
     graphFormat_("raw"),
     runTimeModifiable_(false),
 
-    functionObjects_(*this, enableFunctionObjects)
+    functionObjects_(*this, false)
 {
-    libs_.open(controlDict_, "libs");
+    if (enableFunctionObjects)
+    {
+        functionObjects_.on();
+    }
+
+    if (enableLibs)
+    {
+        libs_.open(controlDict_, "libs");
+    }
+
 
     // Explicitly set read flags on objectRegistry so anything constructed
     // from it reads as well (e.g. fvSolution).
@@ -621,7 +649,8 @@ Foam::Time::Time
     const fileName& caseName,
     const word& systemName,
     const word& constantName,
-    const bool enableFunctionObjects
+    const bool enableFunctionObjects,
+    const bool enableLibs
 )
 :
     TimePaths
@@ -664,9 +693,18 @@ Foam::Time::Time
     graphFormat_("raw"),
     runTimeModifiable_(false),
 
-    functionObjects_(*this, enableFunctionObjects)
+    functionObjects_(*this, false)
 {
-    libs_.open(controlDict_, "libs");
+    if (enableFunctionObjects)
+    {
+        functionObjects_.on();
+    }
+
+    if (enableLibs)
+    {
+        libs_.open(controlDict_, "libs");
+    }
+
     setMonitoring(); // for profiling etc
 }
 
@@ -708,12 +746,6 @@ Foam::word Foam::Time::timeName() const
 }
 
 
-Foam::instantList Foam::Time::times() const
-{
-    return findTimes(path(), constant());
-}
-
-
 Foam::word Foam::Time::findInstance
 (
     const fileName& dir,
@@ -779,68 +811,6 @@ Foam::word Foam::Time::findInstancePath(const instant& t) const
 }
 
 
-Foam::instant Foam::Time::findClosestTime(const scalar t) const
-{
-    instantList timeDirs = findTimes(path(), constant());
-
-    // There is only one time (likely "constant") so return it
-    if (timeDirs.size() == 1)
-    {
-        return timeDirs[0];
-    }
-
-    if (t < timeDirs[1].value())
-    {
-        return timeDirs[1];
-    }
-    else if (t > timeDirs.last().value())
-    {
-        return timeDirs.last();
-    }
-
-    label nearestIndex = -1;
-    scalar deltaT = GREAT;
-
-    for (label timei=1; timei < timeDirs.size(); ++timei)
-    {
-        scalar diff = mag(timeDirs[timei].value() - t);
-        if (diff < deltaT)
-        {
-            deltaT = diff;
-            nearestIndex = timei;
-        }
-    }
-
-    return timeDirs[nearestIndex];
-}
-
-
-Foam::label Foam::Time::findClosestTimeIndex
-(
-    const instantList& timeDirs,
-    const scalar t,
-    const word& constantName
-)
-{
-    label nearestIndex = -1;
-    scalar deltaT = GREAT;
-
-    forAll(timeDirs, timei)
-    {
-        if (timeDirs[timei].name() == constantName) continue;
-
-        scalar diff = mag(timeDirs[timei].value() - t);
-        if (diff < deltaT)
-        {
-            deltaT = diff;
-            nearestIndex = timei;
-        }
-    }
-
-    return nearestIndex;
-}
-
-
 Foam::label Foam::Time::startTimeIndex() const
 {
     return startTimeIndex_;
diff --git a/src/OpenFOAM/db/Time/Time.H b/src/OpenFOAM/db/Time/Time.H
index 5ca64171409109a5a12a97f5bfc34169c89b45d2..a7ba7a04ff4212464f20d0a3de8cc770134aae97 100644
--- a/src/OpenFOAM/db/Time/Time.H
+++ b/src/OpenFOAM/db/Time/Time.H
@@ -143,7 +143,9 @@ protected:
     // Protected data
 
         label  startTimeIndex_;
+
         scalar startTime_;
+
         mutable scalar endTime_;
 
         mutable stopAtControls stopAt_;
@@ -225,7 +227,7 @@ public:
         //- Construct given name of dictionary to read and argument list
         Time
         (
-            const word& name,
+            const word& ctrlDictName,
             const argList& args,
             const word& systemName = "system",
             const word& constantName = "constant"
@@ -234,12 +236,13 @@ public:
         //- Construct given name of dictionary to read, rootPath and casePath
         Time
         (
-            const word& name,
+            const word& ctrlDictName,
             const fileName& rootPath,
             const fileName& caseName,
             const word& systemName = "system",
             const word& constantName = "constant",
-            const bool enableFunctionObjects = true
+            const bool enableFunctionObjects = true,
+            const bool enableLibs = true
         );
 
         //- Construct given dictionary, rootPath and casePath
@@ -250,7 +253,8 @@ public:
             const fileName& caseName,
             const word& systemName = "system",
             const word& constantName = "constant",
-            const bool enableFunctionObjects = true
+            const bool enableFunctionObjects = true,
+            const bool enableLibs = true
         );
 
         //- Construct given endTime, rootPath and casePath
@@ -260,7 +264,8 @@ public:
             const fileName& caseName,
             const word& systemName = "system",
             const word& constantName = "constant",
-            const bool enableFunctionObjects = true
+            const bool enableFunctionObjects = true,
+            const bool enableLibs = true
         );
 
 
@@ -273,16 +278,10 @@ public:
         // Database functions
 
             //- Return root path
-            const fileName& rootPath() const
-            {
-                return TimePaths::rootPath();
-            }
+            using TimePaths::rootPath;
 
             //- Return case name
-            const fileName& caseName() const
-            {
-                return TimePaths::caseName();
-            }
+            using TimePaths::caseName;
 
             //- Return path
             fileName path() const
@@ -290,6 +289,7 @@ public:
                 return rootPath()/caseName();
             }
 
+            //- Return read access to the controlDict dictionary
             const dictionary& controlDict() const
             {
                 return controlDict_;
@@ -343,7 +343,7 @@ public:
             void readModifiedObjects();
 
             //- Return the location of "dir" containing the file "name".
-            //  (eg, used in reading mesh data)
+            //- (eg, used in reading mesh data)
             //  If name is null, search for the directory "dir" only.
             //  Does not search beyond stopInstance (if set) or constant.
             word findInstance
@@ -354,11 +354,8 @@ public:
                 const word& stopInstance = word::null
             ) const;
 
-            //- Search the case for valid time directories
-            instantList times() const;
-
             //- Search the case for the time directory path
-            //  corresponding to the given instance
+            //- corresponding to the given instance
             word findInstancePath
             (
                 const fileName& directory,
@@ -366,20 +363,9 @@ public:
             ) const;
 
             //- Search the case for the time directory path
-            //  corresponding to the given instance
+            //- corresponding to the given instance
             word findInstancePath(const instant& t) const;
 
-            //- Search the case for the time closest to the given time
-            instant findClosestTime(const scalar t) const;
-
-            //- Search instantList for the time index closest to the given time
-            static label findClosestTimeIndex
-            (
-                const instantList& timeDirs,
-                const scalar t,
-                const word& constantName = "constant"
-            );
-
             //- Write time dictionary to the \<time\>/uniform directory
             virtual bool writeTimeDict() const;
 
@@ -392,8 +378,8 @@ public:
                 const bool valid
             ) const;
 
-            //- Write the objects now (not at end of iteration) and continue
-            //  the run
+            //- Write the objects immediately (not at end of iteration)
+            //- and continue the run
             bool writeNow();
 
             //- Write the objects now (not at end of iteration) and end the run
@@ -409,7 +395,7 @@ public:
         // Access
 
             //- Return time name of given scalar time
-            //  formatted with given precision
+            //- formatted with the given precision
             static word timeName
             (
                 const scalar t,
@@ -419,13 +405,6 @@ public:
             //- Return current time name
             virtual word timeName() const;
 
-            //- Search a given directory for valid time directories
-            static instantList findTimes
-            (
-                const fileName& directory,
-                const word& constantName = "constant"
-            );
-
             //- Return start time index
             virtual label startTimeIndex() const;
 
@@ -484,7 +463,7 @@ public:
             //  \code
             //      while (runTime.run())
             //      {
-            //          runTime++;
+            //          ++runTime;
             //          solve;
             //          runTime.write();
             //      }
diff --git a/src/OpenFOAM/db/Time/TimePaths.C b/src/OpenFOAM/db/Time/TimePaths.C
index 05126252c6d3943f347a7a718a92d74c3f6f815e..894e2fafc53b3212d24a30b1010bfa22b1c5aa2f 100644
--- a/src/OpenFOAM/db/Time/TimePaths.C
+++ b/src/OpenFOAM/db/Time/TimePaths.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2016-2018 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -24,6 +24,8 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "TimePaths.H"
+#include "argList.H"
+#include "fileOperation.H"
 #include "IOstreams.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
@@ -36,8 +38,8 @@ bool Foam::TimePaths::detectProcessorCase()
     }
 
     // Look for "processor", but should really check for following digits too
-    const std::string::size_type sep = globalCaseName_.rfind('/');
-    const std::string::size_type pos = globalCaseName_.find
+    const auto sep = globalCaseName_.rfind('/');
+    const auto pos = globalCaseName_.find
     (
         "processor",
         (sep == string::npos ? 0 : sep)
@@ -60,6 +62,28 @@ bool Foam::TimePaths::detectProcessorCase()
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
+Foam::TimePaths::TimePaths
+(
+    const argList& args,
+    const word& systemName,
+    const word& constantName
+)
+:
+    processorCase_(args.parRunControl().parRun()),
+    rootPath_(args.rootPath()),
+    distributed_(args.distributed()),
+    globalCaseName_(args.globalCaseName()),
+    case_(args.caseName()),
+    system_(systemName),
+    constant_(constantName)
+{
+    // For convenience: find out from case name whether it is a
+    // processor directory and set processorCase flag so file searching
+    // goes up one level.
+    detectProcessorCase();
+}
+
+
 Foam::TimePaths::TimePaths
 (
     const fileName& rootPath,
@@ -115,10 +139,8 @@ Foam::fileName Foam::TimePaths::caseSystem() const
     {
         return ".."/system();
     }
-    else
-    {
-        return system();
-    }
+
+    return system();
 }
 
 
@@ -128,12 +150,91 @@ Foam::fileName Foam::TimePaths::caseConstant() const
     {
         return ".."/constant();
     }
-    else
+
+    return constant();
+}
+
+
+Foam::instantList Foam::TimePaths::findTimes
+(
+    const fileName& directory,
+    const word& constantName
+)
+{
+    return fileHandler().findTimes(directory, constantName);
+}
+
+
+Foam::instantList Foam::TimePaths::times() const
+{
+    return findTimes(path(), constant());
+}
+
+
+Foam::label Foam::TimePaths::findClosestTimeIndex
+(
+    const instantList& timeDirs,
+    const scalar t,
+    const word& constantName
+)
+{
+    const label nTimes = timeDirs.size();
+
+    label nearestIndex = -1;
+    scalar deltaT = GREAT;
+
+    for (label timei=0; timei < nTimes; ++timei)
     {
-        return constant();
+        if (timeDirs[timei].name() == constantName) continue;
+
+        const scalar diff = mag(timeDirs[timei].value() - t);
+        if (diff < deltaT)
+        {
+            deltaT = diff;
+            nearestIndex = timei;
+        }
     }
+
+    return nearestIndex;
 }
 
 
+Foam::instant Foam::TimePaths::findClosestTime(const scalar t) const
+{
+    instantList timeDirs = findTimes(path(), constant());
+
+    const label nTimes = timeDirs.size();
+
+    // There is only one time (likely "constant") so return it
+    if (nTimes == 1)
+    {
+        return timeDirs.first();
+    }
+
+    if (t < timeDirs[1].value())
+    {
+        return timeDirs[1];
+    }
+    else if (t > timeDirs.last().value())
+    {
+        return timeDirs.last();
+    }
+
+    label nearestIndex = -1;
+    scalar deltaT = GREAT;
+
+    for (label timei=1; timei < nTimes; ++timei)
+    {
+        const scalar diff = mag(timeDirs[timei].value() - t);
+        if (diff < deltaT)
+        {
+            deltaT = diff;
+            nearestIndex = timei;
+        }
+    }
+
+    return timeDirs[nearestIndex];
+}
+
 
 // ************************************************************************* //
diff --git a/src/OpenFOAM/db/Time/TimePaths.H b/src/OpenFOAM/db/Time/TimePaths.H
index 32674008b2382d39b083b56172046c97125a41ff..38189a4892e891e9621addbd69083f589707f54b 100644
--- a/src/OpenFOAM/db/Time/TimePaths.H
+++ b/src/OpenFOAM/db/Time/TimePaths.H
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2016-2018 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -25,7 +25,7 @@ Class
     Foam::TimePaths
 
 Description
-    A class for addressing time paths without using the Time class.
+    Address the time paths without using the Time class.
 
 SourceFiles
     TimePaths.C
@@ -36,12 +36,16 @@ SourceFiles
 #define TimePaths_H
 
 #include "fileName.H"
+#include "instantList.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+// Forward declarations
+class argList;
+
 /*---------------------------------------------------------------------------*\
                            Class TimePaths Declaration
 \*---------------------------------------------------------------------------*/
@@ -70,13 +74,21 @@ public:
 
     // Constructors
 
+        //- Construct using characteristics given by the argList
+        TimePaths
+        (
+            const argList& args,
+            const word& systemName = "system",
+            const word& constantName = "constant"
+        );
+
         //- Construct given database name, rootPath and casePath
         TimePaths
         (
             const fileName& rootPath,
             const fileName& caseName,
-            const word& systemName,
-            const word& constantName
+            const word& systemName = "system",
+            const word& constantName = "constant"
         );
 
 
@@ -88,87 +100,113 @@ public:
             const bool distributed,
             const fileName& globalCaseName,
             const fileName& caseName,
-            const word& systemName,
-            const word& constantName
+            const word& systemName = "system",
+            const word& constantName = "constant"
         );
 
 
     // Member functions
 
-            //- Return true if this is a processor case
-            bool processorCase() const
-            {
-                return processorCase_;
-            }
-
-            //- Return root path
-            const fileName& rootPath() const
-            {
-                return rootPath_;
-            }
-
-            //- Return global case name
-            const fileName& globalCaseName() const
-            {
-                return globalCaseName_;
-            }
-
-            //- Return case name
-            const fileName& caseName() const
-            {
-                return case_;
-            }
-
-            //- Return case name
-            fileName& caseName()
-            {
-                return case_;
-            }
-
-            //- Return system name
-            const word& system() const
-            {
-                return system_;
-            }
-
-            //- Return system name for the case
-            //  which for parallel runs returns ../system()
-            fileName caseSystem() const;
-
-            //- Return constant name
-            const word& constant() const
-            {
-                return constant_;
-            }
-
-            //- Is case running with parallel distributed directories
-            //  (i.e. not NFS mounted)
-            bool distributed() const
-            {
-                return distributed_;
-            }
-
-            //- Return constant name for the case
-            //  which for parallel runs returns ../constant()
-            fileName caseConstant() const;
-
-            //- Return path
-            fileName path() const
-            {
-                return rootPath()/caseName();
-            }
-
-            //- Return system path
-            fileName systemPath() const
-            {
-                return path()/system();
-            }
-
-            //- Return constant path
-            fileName constantPath() const
-            {
-                return path()/constant();
-            }
+        //- Return true if this is a processor case
+        bool processorCase() const
+        {
+            return processorCase_;
+        }
+
+        //- Return root path
+        const fileName& rootPath() const
+        {
+            return rootPath_;
+        }
+
+        //- Return global case name
+        const fileName& globalCaseName() const
+        {
+            return globalCaseName_;
+        }
+
+        //- Return case name
+        const fileName& caseName() const
+        {
+            return case_;
+        }
+
+        //- Return case name
+        fileName& caseName()
+        {
+            return case_;
+        }
+
+        //- Return system name
+        const word& system() const
+        {
+            return system_;
+        }
+
+        //- Return the system name for the case, which is
+        //- \c ../system() for parallel runs.
+        fileName caseSystem() const;
+
+        //- Return constant name
+        const word& constant() const
+        {
+            return constant_;
+        }
+
+        //- Is case running with parallel distributed directories
+        //  (i.e. not NFS mounted)
+        bool distributed() const
+        {
+            return distributed_;
+        }
+
+        //- Return the constant name for the case, which is
+        //- \c ../constant() for parallel runs.
+        fileName caseConstant() const;
+
+        //- Return path
+        fileName path() const
+        {
+            return rootPath()/caseName();
+        }
+
+        //- Return system path
+        fileName systemPath() const
+        {
+            return path()/system();
+        }
+
+        //- Return constant path
+        fileName constantPath() const
+        {
+            return path()/constant();
+        }
+
+
+    // Searching
+
+        //- Search a given directory for valid time directories
+        //  Forwards to the current fileHandler
+        static instantList findTimes
+        (
+            const fileName& directory,
+            const word& constantName = "constant"
+        );
+
+        //- Search instantList for the time index closest to the specified time
+        static label findClosestTimeIndex
+        (
+            const instantList& timeDirs,
+            const scalar t,
+            const word& constantName = "constant"
+        );
+
+        //- Search the case for valid time directories
+        instantList times() const;
+
+        //- Search the case for the time closest to the given time
+        instant findClosestTime(const scalar t) const;
+
 };
 
 
diff --git a/src/OpenFOAM/db/Time/TimeState.C b/src/OpenFOAM/db/Time/TimeState.C
index d3d61a8b38890373d35358948b11cbca050b3bc4..7a0f7f5fb1f9648cb66dc8e14a41a0022b9a28c0 100644
--- a/src/OpenFOAM/db/Time/TimeState.C
+++ b/src/OpenFOAM/db/Time/TimeState.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2018 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -32,21 +32,15 @@ Foam::TimeState::TimeState()
 :
     dimensionedScalar(Time::timeName(0), dimTime, 0),
     timeIndex_(0),
+    writeTimeIndex_(0),
     deltaT_(0),
-    deltaTSave_(0),
     deltaT0_(0),
+    deltaTSave_(0),
     deltaTchanged_(false),
-    writeTimeIndex_(0),
     writeTime_(false)
 {}
 
 
-// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * * //
-
-Foam::TimeState::~TimeState()
-{}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 Foam::scalar Foam::TimeState::userTimeToTime(const scalar theta) const
diff --git a/src/OpenFOAM/db/Time/TimeState.H b/src/OpenFOAM/db/Time/TimeState.H
index fb3a090ba7b2631d749cbdae65856d6314ebb094..e85de2d65d9f802ae543b8455431530b86909e2b 100644
--- a/src/OpenFOAM/db/Time/TimeState.H
+++ b/src/OpenFOAM/db/Time/TimeState.H
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2018 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -50,15 +50,16 @@ class TimeState
 :
     public dimensionedScalar
 {
-
 protected:
 
         label timeIndex_;
+        label writeTimeIndex_;
+
         scalar deltaT_;
-        scalar deltaTSave_;
         scalar deltaT0_;
+        scalar deltaTSave_;
+
         bool deltaTchanged_;
-        label writeTimeIndex_;
         bool writeTime_;
 
 
@@ -66,11 +67,12 @@ public:
 
     // Constructors
 
+        //- Construct a zero time state, using the current time formattin
         TimeState();
 
 
     //- Destructor
-    virtual ~TimeState();
+    virtual ~TimeState() = default;
 
 
     // Member functions
@@ -108,8 +110,8 @@ public:
             inline bool writeTime() const;
 
             //- Return true if this is a write time.
-            //  Provided for backward-compatibility
-            inline bool outputTime() const;
+            //  \deprecated in favour of writeTime() - MAY-2016
+            inline bool outputTime() const { return this->writeTime(); }
 };
 
 
diff --git a/src/OpenFOAM/db/Time/TimeStateI.H b/src/OpenFOAM/db/Time/TimeStateI.H
index 939d983435c49b7b17ebc1d1a8193910f351fdd0..bb572c776a10f905febe966ca8f60494a91ba2f5 100644
--- a/src/OpenFOAM/db/Time/TimeStateI.H
+++ b/src/OpenFOAM/db/Time/TimeStateI.H
@@ -68,10 +68,4 @@ inline bool Foam::TimeState::writeTime() const
 }
 
 
-inline bool Foam::TimeState::outputTime() const
-{
-    return writeTime_;
-}
-
-
 // ************************************************************************* //
diff --git a/src/OpenFOAM/db/Time/timeSelector.C b/src/OpenFOAM/db/Time/timeSelector.C
index 15e314f1d243b818cb9448d2be715aa9e75d52bd..6366a5fc12a951078a99e21b7ee9131390c31cc7 100644
--- a/src/OpenFOAM/db/Time/timeSelector.C
+++ b/src/OpenFOAM/db/Time/timeSelector.C
@@ -52,14 +52,14 @@ bool Foam::timeSelector::selected(const instant& value) const
 
 Foam::List<bool> Foam::timeSelector::selected(const instantList& times) const
 {
-    List<bool> lst(times.size(), false);
+    List<bool> selectTimes(times.size(), false);
 
     // Check ranges, avoid false positive on constant/
     forAll(times, timei)
     {
         if (times[timei].name() != "constant" && selected(times[timei]))
         {
-            lst[timei] = true;
+            selectTimes[timei] = true;
         }
     }
 
@@ -70,29 +70,26 @@ Foam::List<bool> Foam::timeSelector::selected(const instantList& times) const
         {
             const scalar target = range.value();
 
-            int nearestIndex = -1;
-            scalar nearestDiff = Foam::GREAT;
+            int nearestIndex =
+                TimePaths::findClosestTimeIndex
+                (
+                    times,
+                    target
+                );
 
-            forAll(times, timei)
-            {
-                if (times[timei].name() == "constant") continue;
-
-                scalar diff = fabs(times[timei].value() - target);
-                if (diff < nearestDiff)
-                {
-                    nearestDiff = diff;
-                    nearestIndex = timei;
-                }
-            }
+            // Note could also test if the index is too far away.
+            // Eg, for times (0 10 20 30 40) selecting 100 will currently
+            // return the closest time (40), but perhaps we should limit that
+            // to the last deltaT?
 
             if (nearestIndex >= 0)
             {
-                lst[nearestIndex] = true;
+                selectTimes[nearestIndex] = true;
             }
         }
     }
 
-    return lst;
+    return selectTimes;
 }
 
 
@@ -271,7 +268,7 @@ Foam::instantList Foam::timeSelector::select0
         times.append(instant(0, runTime.constant()));
     }
 
-    runTime.setTime(times[0], 0);
+    runTime.setTime(times.first(), 0);
 
     return times;
 }
@@ -296,7 +293,7 @@ Foam::instantList Foam::timeSelector::selectIfPresent
     }
 
     // No timeSelector option specified. Do not change runTime.
-    return instantList{ instant(runTime.value(), runTime.timeName()) };
+    return instantList(one(), instant(runTime.value(), runTime.timeName()));
 }
 
 
@@ -309,11 +306,13 @@ Foam::instantList Foam::timeSelector::select
 {
     instantList times(timeSelector::select0(runTime, args));
 
-    if (times.size() && args.found("newTimes"))
+    const label nTimes = times.size();
+
+    if (nTimes && args.found("newTimes"))
     {
-        List<bool> selectTimes(times.size(), true);
+        List<bool> selectTimes(nTimes, true);
 
-        forAll(times, timei)
+        for (label timei=0; timei < nTimes; ++timei)
         {
             selectTimes[timei] =
                !fileHandler().exists
diff --git a/src/OpenFOAM/db/Time/timeSelector.H b/src/OpenFOAM/db/Time/timeSelector.H
index e93d3cd5ee5705a58e57222d198a6cae060b4e01..031fd9b60f9249ae7e9535cfc30ef9d996ba703a 100644
--- a/src/OpenFOAM/db/Time/timeSelector.H
+++ b/src/OpenFOAM/db/Time/timeSelector.H
@@ -37,7 +37,7 @@ Description
     #include "createTime.H"
     instantList timeDirs = timeSelector::select0(runTime, args);
     ...
-    forAll(timeDirs, timeI)
+    forAll(timeDirs, timei)
     {
         ...
     }
@@ -79,7 +79,7 @@ SourceFiles
 namespace Foam
 {
 
-// Forward declaration of classes
+// Forward declarations
 class argList;
 class Time;
 
@@ -146,8 +146,8 @@ public:
         );
 
         //- Return the set of times selected based on the argList options
-        //  also set the runTime to the first instance or the
-        //  \c constant/ directory if no instances are specified or available
+        //- and also set the runTime to the first instance or the
+        //- \c constant/ directory if no instances are specified or available
         static instantList select0
         (
             Time& runTime,
@@ -155,7 +155,7 @@ public:
         );
 
         //- If any time option provided return the set of times (as select0)
-        //  otherwise return just the current time.
+        //- otherwise return just the current time.
         //  Also set the runTime to the first instance
         static instantList selectIfPresent
         (
@@ -164,8 +164,8 @@ public:
         );
 
         //- Return the set of times selected based on the argList options
-        //  including support for \b -newTimes in which times are selected
-        //  if the file 'fName' does not exist in the time directory.
+        //- including support for \b -newTimes in which times are selected
+        //- if the file 'fName' does not exist in the time directory.
         //  Also set the runTime to the first instance or the
         //  \c constant/ directory if no instances are specified or available
         static instantList select
diff --git a/src/OpenFOAM/global/argList/argList.C b/src/OpenFOAM/global/argList/argList.C
index 1fee9a35401d810c0ca522dd80df08c3e80df17c..f8fc4311265a17caa0d27a3719acf7dc6e5bd3e9 100644
--- a/src/OpenFOAM/global/argList/argList.C
+++ b/src/OpenFOAM/global/argList/argList.C
@@ -325,6 +325,16 @@ void Foam::argList::noJobInfo()
 }
 
 
+void Foam::argList::noLibs()
+{
+    addBoolOption
+    (
+        "no-libs",
+        "disable use of the controlDict libs entry"
+    );
+}
+
+
 void Foam::argList::noParallel()
 {
     removeOption("parallel");
diff --git a/src/OpenFOAM/global/argList/argList.H b/src/OpenFOAM/global/argList/argList.H
index 1fe2fadb948ef534e28ca1270305e6a27d4d5b2c..484b9230f3fb1e7d34da286eee2cbf8276429cc7 100644
--- a/src/OpenFOAM/global/argList/argList.H
+++ b/src/OpenFOAM/global/argList/argList.H
@@ -506,6 +506,9 @@ public:
         //- Suppress JobInfo, overriding controlDict setting
         static void noJobInfo();
 
+        //- Add the '-no-libs' command line option
+        static void noLibs();
+
         //- Remove the parallel options
         static void noParallel();
 
diff --git a/src/OpenFOAM/include/checkConstantOption.H b/src/OpenFOAM/include/checkConstantOption.H
index f4bc5213de21f8b8e04f7ffe0f0c82320e6087ec..a9d5006eb5f1f3b923d8649c92b6122468295c55 100644
--- a/src/OpenFOAM/include/checkConstantOption.H
+++ b/src/OpenFOAM/include/checkConstantOption.H
@@ -7,5 +7,5 @@ if
  && (Times[startTime].name() == "constant")
 )
 {
-    startTime++;
+    ++startTime;
 }
diff --git a/src/combustionModels/diffusionMulticomponent/diffusionMulticomponent.C b/src/combustionModels/diffusionMulticomponent/diffusionMulticomponent.C
index d1d596ecf4cbea7764dfaf724748ea80df3af46b..5be2f9e7c3d01c45f36626f1ba707eddc0e03b53 100644
--- a/src/combustionModels/diffusionMulticomponent/diffusionMulticomponent.C
+++ b/src/combustionModels/diffusionMulticomponent/diffusionMulticomponent.C
@@ -315,7 +315,7 @@ diffusionMulticomponent<ReactionThermo, ThermoType>::correct()
 
             Rijk.relax(alpha_);
 
-            if (this->mesh_.time().outputTime() && debug)
+            if (debug && this->mesh_.time().writeTime())
             {
                 Rijk.write();
                 ft.write();
diff --git a/src/dynamicMesh/meshCut/meshModifiers/refinementIterator/refinementIterator.C b/src/dynamicMesh/meshCut/meshModifiers/refinementIterator/refinementIterator.C
index 0fe62fa03afa5b28b3d4a2e671487bdd666078d9..c2925932cb94704a0712f50a5a55b85deb170064 100644
--- a/src/dynamicMesh/meshCut/meshModifiers/refinementIterator/refinementIterator.C
+++ b/src/dynamicMesh/meshCut/meshModifiers/refinementIterator/refinementIterator.C
@@ -92,7 +92,7 @@ Foam::Map<Foam::label> Foam::refinementIterator::setRefinement
         if (writeMesh_)
         {
             // Need different times to write meshes.
-            runTime++;
+            ++runTime;
         }
 
         polyTopoChange meshMod(mesh_);
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C
index 80fc93877fc855add5d902f6e1368fc8a3a92316..911305d020e23e6ef8ebb251d54bced833936298 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C
@@ -1096,7 +1096,7 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::updateCoeffs()
             writeEddyOBJ();
         }
 
-        if (debug && db().time().outputTime())
+        if (debug && db().time().writeTime())
         {
             writeLumleyCoeffs();
         }
diff --git a/src/fvOptions/sources/derived/directionalPressureGradientExplicitSource/directionalPressureGradientExplicitSource.C b/src/fvOptions/sources/derived/directionalPressureGradientExplicitSource/directionalPressureGradientExplicitSource.C
index 57f307d66d98e4893b2a054dcec3afeebfcf32b1..470070276ba8f9ccdf786032cfeec9f15ffd82f2 100644
--- a/src/fvOptions/sources/derived/directionalPressureGradientExplicitSource/directionalPressureGradientExplicitSource.C
+++ b/src/fvOptions/sources/derived/directionalPressureGradientExplicitSource/directionalPressureGradientExplicitSource.C
@@ -134,7 +134,7 @@ void Foam::fv::directionalPressureGradientExplicitSource::writeProps
 ) const
 {
     // Only write on output time
-    if (mesh_.time().outputTime())
+    if (mesh_.time().writeTime())
     {
         IOdictionary propsDict
         (
diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinementBaffles.C b/src/mesh/snappyHexMesh/meshRefinement/meshRefinementBaffles.C
index 03279701c4c4f81174b40280a2c81398257a6cb6..39af29276a5cb8a43cec7a6443bf21e77524e761 100644
--- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinementBaffles.C
+++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinementBaffles.C
@@ -2800,7 +2800,7 @@ void Foam::meshRefinement::handleSnapProblems
 
     if (debug)
     {
-        runTime++;
+        ++runTime;
     }
 
     // Create baffles with same owner and neighbour for now.
@@ -3679,7 +3679,7 @@ void Foam::meshRefinement::baffleAndSplitMesh
 
     if (debug)
     {
-        runTime++;
+        ++runTime;
     }
 
     splitMeshRegions
@@ -3702,7 +3702,7 @@ void Foam::meshRefinement::baffleAndSplitMesh
 
     if (debug&MESH)
     {
-        runTime++;
+        ++runTime;
         Pout<< "Writing subsetted mesh to time " << timeName()
             << endl;
         write
@@ -3787,7 +3787,7 @@ void Foam::meshRefinement::mergeFreeStandingBaffles
 
         if (debug)
         {
-            runTime++;
+            ++runTime;
         }
 
         splitMeshRegions
diff --git a/src/thermophysicalModels/radiation/radiationModels/solarLoad/solarLoad.C b/src/thermophysicalModels/radiation/radiationModels/solarLoad/solarLoad.C
index 4dd450145c955c5ae37919bfc3b6072cfc8124c2..5e72e5795087251ed80232ecd2e061026286781b 100644
--- a/src/thermophysicalModels/radiation/radiationModels/solarLoad/solarLoad.C
+++ b/src/thermophysicalModels/radiation/radiationModels/solarLoad/solarLoad.C
@@ -968,7 +968,7 @@ void Foam::radiation::solarLoad::calculate()
 
     if (debug)
     {
-        if (mesh_.time().outputTime())
+        if (mesh_.time().writeTime())
         {
             Ru_.write();
         }
diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/validation/WatersKing/WatersKing.C b/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/validation/WatersKing/WatersKing.C
index 4705dfdc05727b210b550723265b3910130870b6..c396a09bcf6704333baac2cbc15430bb14e60d04 100644
--- a/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/validation/WatersKing/WatersKing.C
+++ b/tutorials/incompressible/pimpleFoam/laminar/planarPoiseuille/validation/WatersKing/WatersKing.C
@@ -131,7 +131,7 @@ int main(int argc, char *argv[])
         }
         scalar U = UInf*(1.5*(1 - sqr(y)) + sum(A*B));
         file<< runTime.timeName() << token::TAB << U << endl;
-        runTime++;
+        ++runTime;
     }
 
     Info<< nl;