diff --git a/applications/solvers/multiphase/interIsoFoam/alphaEqn.H b/applications/solvers/multiphase/interIsoFoam/alphaEqn.H
index 360b9097a1edbe91521768950ce424adf46cd87c..fda7a30c9b1fd6a1df5c2d5165f03724b9072d14 100644
--- a/applications/solvers/multiphase/interIsoFoam/alphaEqn.H
+++ b/applications/solvers/multiphase/interIsoFoam/alphaEqn.H
@@ -1,48 +1,11 @@
 {
-    if (pimple.nCorrPIMPLE() > 1)
-    {
-        // If nOuterCorrectors > 1 then for all but the first loop the advection
-        // of alpha is done using an average, 0.5*phi+0.5*phiNew where phi is
-        // the flux at the beginning of the time step and phiNew is the flux
-        // estimate at the end of the time step from the previous outer
-        // iteration. Similarly we use 0.5*U + 0.5*UNew in later iterations.
-        if (pimple.firstIter())
-        {
-            // To recalculate the alpha1 update in subsequent iterations, we
-            // must store its current value before overwriting with the new
-            // value
-            alpha1.storePrevIter();
-            // Storing initial phi and U for use in later outer iterations.
-            phi.storePrevIter();
-            U.storePrevIter();
-        }
-        else
-        {
-            // Resetting alpha1 to value before advection in first PIMPLE
-            // iteration.
-            alpha1 = alpha1.prevIter();
-
-            // Setting U and phi with which to advect interface.
-            U = 0.5*U.prevIter() + 0.5*U;
-            phi = 0.5*phi.prevIter() + 0.5*phi;
-        }
-    }
-
     // Updating alpha1
     advector.advect();
     #include "rhofs.H"
     rhoPhi = advector.getRhoPhi(rho1f, rho2f);
 
-    if (!pimple.firstIter())
-    {
-        // Resetting U and phi to value at latest iteration.
-        U = 2.0*U - U.prevIter();
-        phi = 2.0*phi - phi.prevIter();
-    }
-
     alpha2 = 1.0 - alpha1;
     mixture.correct();
-
 }
 
 Info<< "Phase-1 volume fraction = "
diff --git a/applications/solvers/multiphase/interIsoFoam/alphaEqnSubCycle.H b/applications/solvers/multiphase/interIsoFoam/alphaEqnSubCycle.H
index 3c8ba18f2ba7a20f4323443c0013743e7bb4deb8..65376d61fe44ce27dc9e5c9a01f4411ea1ea3e0c 100644
--- a/applications/solvers/multiphase/interIsoFoam/alphaEqnSubCycle.H
+++ b/applications/solvers/multiphase/interIsoFoam/alphaEqnSubCycle.H
@@ -1,3 +1,32 @@
+if (pimple.nCorrPIMPLE() > 1)
+{
+    // If nOuterCorrectors > 1 then for all but the first loop the advection
+    // of alpha is done using an average, 0.5*phi+0.5*phiNew where phi is
+    // the flux at the beginning of the time step and phiNew is the flux
+    // estimate at the end of the time step from the previous outer
+    // iteration. Similarly we use 0.5*U + 0.5*UNew in later iterations.
+    if (pimple.firstIter())
+    {
+        // To recalculate the alpha1 update in subsequent iterations, we
+        // must store its current value before overwriting with the new
+        // value
+        alpha1.storePrevIter();
+        // Storing initial phi and U for use in later outer iterations.
+        phi.storePrevIter();
+        U.storePrevIter();
+    }
+    else
+    {
+        // Resetting alpha1 to value before advection in first PIMPLE
+        // iteration.
+        alpha1 = alpha1.prevIter();
+
+        // Temporarily setting U and phi with which to advect interface.
+        U = 0.5*U.prevIter() + 0.5*U;
+        phi = 0.5*phi.prevIter() + 0.5*phi;
+    }
+}
+
 if (nAlphaSubCycles > 1)
 {
     dimensionedScalar totalDeltaT = runTime.deltaT();
@@ -30,4 +59,11 @@ else
     #include "alphaEqn.H"
 }
 
+if (!pimple.firstIter())
+{
+    // Resetting U and phi to value at latest iteration.
+    U = 2.0*U - U.prevIter();
+    phi = 2.0*phi - phi.prevIter();
+}
+
 rho == alpha1*rho1 + alpha2*rho2;