diff --git a/applications/solvers/incompressible/icoDyMFoam/icoDyMFoam.C b/applications/solvers/incompressible/icoDyMFoam/icoDyMFoam.C
index 54f64497f4b533c52a0b75cab6edb76104674ef3..39774a3373f93ce10a9fafe1ef96d30bdc2671a4 100644
--- a/applications/solvers/incompressible/icoDyMFoam/icoDyMFoam.C
+++ b/applications/solvers/incompressible/icoDyMFoam/icoDyMFoam.C
@@ -75,6 +75,9 @@ int main(int argc, char *argv[])
 #           include "correctPhi.H"
         }
 
+        // Keep the absolute fluxes for use in ddtPhiCorr
+        surfaceScalarField phiAbs("phiAbs", phi);
+
         // Make the fluxes relative to the mesh motion
         fvc::makeRelative(phi, U);
 
@@ -95,7 +98,11 @@ int main(int argc, char *argv[])
 
                 U = rAU*UEqn.H();
                 phi = (fvc::interpolate(U) & mesh.Sf());
-                    //+ fvc::ddtPhiCorr(rAU, U, phi);
+
+                if (ddtPhiCorr)
+                {
+                    phi += fvc::ddtPhiCorr(rAU, U, phiAbs);
+                }
 
                 adjustPhi(phi, U, p);
 
@@ -116,7 +123,7 @@ int main(int argc, char *argv[])
                     {
                         pEqn.solve(mesh.solver(p.name()));
                     }
-                
+
                     if (nonOrth == nNonOrthCorr)
                     {
                         phi -= pEqn.flux();
diff --git a/applications/solvers/multiphase/interDyMFoam/pEqn.H b/applications/solvers/multiphase/interDyMFoam/pEqn.H
index 5bd1a98d40af8cbc80823ff1274b6d7850cf9834..d4afbae6f49f9f9abd227b2afbb87a7615c4c889 100644
--- a/applications/solvers/multiphase/interDyMFoam/pEqn.H
+++ b/applications/solvers/multiphase/interDyMFoam/pEqn.H
@@ -5,12 +5,12 @@
     volVectorField HU = UEqn.H();
     U = rAU*HU;
 
-    surfaceScalarField phiU
-    (
-        "phiU",
-        (fvc::interpolate(U) & mesh.Sf())
-      + fvc::ddtPhiCorr(rAU, rho, U, phiAbs)
-    );
+    surfaceScalarField phiU("phiU", (fvc::interpolate(U) & mesh.Sf()));
+
+    if (ddtPhiCorr)
+    {
+        phiU += fvc::ddtPhiCorr(rAU, rho, U, phiAbs);
+    }
 
     phi = phiU +
         (
diff --git a/src/finiteVolume/cfdTools/general/include/readPISOControls.H b/src/finiteVolume/cfdTools/general/include/readPISOControls.H
index d29a60785addc2a2334ef8d1d772aebb45741778..e51ecdbb8bc237b527daf3cbf741b744a4592ab4 100644
--- a/src/finiteVolume/cfdTools/general/include/readPISOControls.H
+++ b/src/finiteVolume/cfdTools/general/include/readPISOControls.H
@@ -25,3 +25,9 @@
     {
         nOuterCorr = readInt(piso.lookup("nOuterCorrectors"));
     }
+
+    bool ddtPhiCorr = false;
+    if (piso.found("ddtPhiCorr"))
+    {
+        ddtPhiCorr = Switch(piso.lookup("ddtPhiCorr"));
+    }