diff --git a/applications/solvers/multiphase/compressibleInterFoam/alphaEqnsSubCycle.H b/applications/solvers/multiphase/compressibleInterFoam/alphaEqnsSubCycle.H
index 2d70a5bab5932cb23837cdd0138fad6e9e81d28f..be34ab52ed0638ee53e17931059e32e0b0159389 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/alphaEqnsSubCycle.H
+++ b/applications/solvers/multiphase/compressibleInterFoam/alphaEqnsSubCycle.H
@@ -6,7 +6,7 @@
     surfaceScalarField phic(mag(phi/mesh.magSf()));
     phic = min(interface.cAlpha()*phic, max(phic));
 
-    volScalarField divU(fvc::div(phi));
+    volScalarField divU(fvc::div(fvc::absolute(phi, U)));
 
     if (nAlphaSubCycles > 1)
     {
@@ -29,10 +29,4 @@
     {
         #include "alphaEqns.H"
     }
-
-    // correct interface on first PIMPLE corrector
-    if (pimple.corr() == 1)
-    {
-        interface.correct();
-    }
 }
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/alphaEqnsSubCycle.H b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/alphaEqnsSubCycle.H
deleted file mode 100644
index ade8af00817fe065a03aeeb70a6b32f1980a4a77..0000000000000000000000000000000000000000
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/alphaEqnsSubCycle.H
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-    label nAlphaCorr(readLabel(pimple.dict().lookup("nAlphaCorr")));
-
-    label nAlphaSubCycles(readLabel(pimple.dict().lookup("nAlphaSubCycles")));
-
-    surfaceScalarField phic(mag(phi/mesh.magSf()));
-    phic = min(interface.cAlpha()*phic, max(phic));
-
-    fvc::makeAbsolute(phi, U);
-    volScalarField divU(fvc::div(phi));
-    fvc::makeRelative(phi, U);
-
-    if (nAlphaSubCycles > 1)
-    {
-        dimensionedScalar totalDeltaT = runTime.deltaT();
-        surfaceScalarField rhoPhiSum(0.0*rhoPhi);
-
-        for
-        (
-            subCycle<volScalarField> alphaSubCycle(alpha1, nAlphaSubCycles);
-            !(++alphaSubCycle).end();
-        )
-        {
-            #include "alphaEqns.H"
-            rhoPhiSum += (runTime.deltaT()/totalDeltaT)*rhoPhi;
-        }
-
-        rhoPhi = rhoPhiSum;
-    }
-    else
-    {
-        #include "alphaEqns.H"
-    }
-
-    // correct interface on first PIMPLE corrector
-    if (pimple.corr() == 1)
-    {
-        interface.correct();
-    }
-}
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
index b9f52944e84e453b1876b7afa368e516e1174d27..acf563fc8e2d4e1591a93c184eab5f40b86ee96e 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
@@ -122,6 +122,12 @@ int main(int argc, char *argv[])
         {
             #include "alphaEqnsSubCycle.H"
 
+            // correct interface on first PIMPLE corrector
+            if (pimple.corr() == 1)
+            {
+                interface.correct();
+            }
+
             solve(fvm::ddt(rho) + fvc::div(rhoPhi));
 
             #include "UEqn.H"
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C
index 7c24e05a1afbbcb4774a9934657cecb013e1ae03..54c246f203b5f5ed9083d192fa3d0013ee01af3a 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C
@@ -80,6 +80,12 @@ int main(int argc, char *argv[])
         {
             #include "alphaEqnsSubCycle.H"
 
+            // correct interface on first PIMPLE corrector
+            if (pimple.corr() == 1)
+            {
+                interface.correct();
+            }
+
             solve(fvm::ddt(rho) + fvc::div(rhoPhi));
 
             #include "UEqn.H"
diff --git a/applications/solvers/multiphase/interFoam/LTSInterFoam/LTSInterFoam.C b/applications/solvers/multiphase/interFoam/LTSInterFoam/LTSInterFoam.C
index 06811c219195d9a5f4f8ea22eb3e25da9a35348b..c1d9630a006c696034b298cd979c4912463ace3f 100644
--- a/applications/solvers/multiphase/interFoam/LTSInterFoam/LTSInterFoam.C
+++ b/applications/solvers/multiphase/interFoam/LTSInterFoam/LTSInterFoam.C
@@ -77,6 +77,7 @@ int main(int argc, char *argv[])
         twoPhaseProperties.correct();
 
         #include "alphaEqnSubCycle.H"
+        interface.correct();
 
         turbulence->correct();
 
diff --git a/applications/solvers/multiphase/interFoam/LTSInterFoam/alphaEqn.H b/applications/solvers/multiphase/interFoam/LTSInterFoam/alphaEqn.H
index 0c2cf71e4edf3d00e5695a7be322c3f7ba423917..5f5ac824b8aacfdd77227f03bdcba07026870939 100644
--- a/applications/solvers/multiphase/interFoam/LTSInterFoam/alphaEqn.H
+++ b/applications/solvers/multiphase/interFoam/LTSInterFoam/alphaEqn.H
@@ -30,8 +30,8 @@
         rhoPhi = phiAlpha*(rho1 - rho2) + phi*rho2;
     }
 
-    Info<< "Liquid phase volume fraction = "
-        << alpha1.weightedAverage(mesh.V()).value()
+    Info<< "Phase-1 volume fraction = "
+        << alpha1.weightedAverage(mesh.Vsc()).value()
         << "  Min(alpha1) = " << min(alpha1).value()
         << "  Max(alpha1) = " << max(alpha1).value()
         << endl;
diff --git a/applications/solvers/multiphase/interFoam/LTSInterFoam/alphaEqnSubCycle.H b/applications/solvers/multiphase/interFoam/LTSInterFoam/alphaEqnSubCycle.H
index b59b0ae5fe29d683bc325f2d9b9f4be1106dca9c..6c82f940499ea39567db1e400274832dfa354b0f 100644
--- a/applications/solvers/multiphase/interFoam/LTSInterFoam/alphaEqnSubCycle.H
+++ b/applications/solvers/multiphase/interFoam/LTSInterFoam/alphaEqnSubCycle.H
@@ -1,8 +1,5 @@
-const dictionary& pimpleDict = pimple.dict();
-
-label nAlphaCorr(readLabel(pimpleDict.lookup("nAlphaCorr")));
-
-label nAlphaSubCycles(readLabel(pimpleDict.lookup("nAlphaSubCycles")));
+label nAlphaCorr(readLabel(pimple.dict().lookup("nAlphaCorr")));
+label nAlphaSubCycles(readLabel(pimple.dict().lookup("nAlphaSubCycles")));
 
 if (nAlphaSubCycles > 1)
 {
@@ -26,6 +23,4 @@ else
     #include "alphaEqn.H"
 }
 
-interface.correct();
-
 rho == alpha1*rho1 + (scalar(1) - alpha1)*rho2;
diff --git a/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C b/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C
index 042a17e1f3cf7c127dc7221006ca9d4caefccd7d..6d2ad224b4374709f8de3984b92ac4c8da3b53c5 100644
--- a/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C
+++ b/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C
@@ -81,6 +81,7 @@ int main(int argc, char *argv[])
         twoPhaseProperties.correct();
 
         #include "alphaEqnSubCycle.H"
+        interface.correct();
         #include "zonePhaseVolumes.H"
 
         // --- Pressure-velocity PIMPLE corrector loop
diff --git a/applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H b/applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H
index fa56de00bb40474dc995a83b92f6a8e2a7997894..6c82f940499ea39567db1e400274832dfa354b0f 100644
--- a/applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H
+++ b/applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H
@@ -23,6 +23,4 @@ else
     #include "alphaEqn.H"
 }
 
-interface.correct();
-
 rho == alpha1*rho1 + (scalar(1) - alpha1)*rho2;
diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
index 3d450a3917041df6158dbd163358552f415ddfc8..730c535eff0a44b630d34f087c5326e5c7bcf5d7 100644
--- a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
+++ b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
@@ -114,6 +114,7 @@ int main(int argc, char *argv[])
         twoPhaseProperties.correct();
 
         #include "alphaEqnSubCycle.H"
+        interface.correct();
 
         // --- Pressure-velocity PIMPLE corrector loop
         while (pimple.loop())
diff --git a/applications/solvers/multiphase/interFoam/interFoam.C b/applications/solvers/multiphase/interFoam/interFoam.C
index 559916f2ce3e313f9c946b4d0e832d7a673fe5a5..20d2777ef5254989bde38f045d85421e0be046b3 100644
--- a/applications/solvers/multiphase/interFoam/interFoam.C
+++ b/applications/solvers/multiphase/interFoam/interFoam.C
@@ -43,7 +43,6 @@ Description
 #include "interfaceProperties.H"
 #include "twoPhaseMixture.H"
 #include "turbulenceModel.H"
-#include "interpolationTable.H"
 #include "pimpleControl.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -82,6 +81,7 @@ int main(int argc, char *argv[])
         twoPhaseProperties.correct();
 
         #include "alphaEqnSubCycle.H"
+        interface.correct();
 
         // --- Pressure-velocity PIMPLE corrector loop
         while (pimple.loop())
diff --git a/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C b/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C
index 244ea75faef0e11ab52aaa6f4c40a42ef6db4004..795b7c14a1f42b47372a48fe029222e4a853f134 100644
--- a/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C
+++ b/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C
@@ -83,6 +83,7 @@ int main(int argc, char *argv[])
         twoPhaseProperties.correct();
 
         #include "alphaEqnSubCycle.H"
+        interface.correct();
 
         // --- Pressure-velocity PIMPLE corrector loop
         while (pimple.loop())
diff --git a/applications/solvers/multiphase/interMixingFoam/alphaEqnsSubCycle.H b/applications/solvers/multiphase/interMixingFoam/alphaEqnsSubCycle.H
index d816f8acedf88815eb09aaaad7e234faf6508edf..97a09ce017d3b753ddf4a91c7dc37d06e41e46c3 100644
--- a/applications/solvers/multiphase/interMixingFoam/alphaEqnsSubCycle.H
+++ b/applications/solvers/multiphase/interMixingFoam/alphaEqnsSubCycle.H
@@ -24,8 +24,6 @@ else
     #include "alphaEqns.H"
 }
 
-interface.correct();
-
 {
     volScalarField rhoNew(alpha1*rho1 + alpha2*rho2 + alpha3*rho3);
 
diff --git a/applications/solvers/multiphase/interMixingFoam/interMixingFoam.C b/applications/solvers/multiphase/interMixingFoam/interMixingFoam.C
index d4b1194ba11a52e523e1a1700723aeeb93ac4308..9f9095b4075514d6a8234ffd1e54d23c59fba1b0 100644
--- a/applications/solvers/multiphase/interMixingFoam/interMixingFoam.C
+++ b/applications/solvers/multiphase/interMixingFoam/interMixingFoam.C
@@ -74,6 +74,7 @@ int main(int argc, char *argv[])
         threePhaseProperties.correct();
 
         #include "alphaEqnsSubCycle.H"
+        interface.correct();
 
         #define twoPhaseProperties threePhaseProperties
 
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqnSubCycle.H b/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqnSubCycle.H
index 6e02524e26232e3495d4cab10796cc6091231650..ad2cf243d2bae2459a62370bf468e335af8c9d04 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqnSubCycle.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqnSubCycle.H
@@ -40,10 +40,5 @@ surfaceScalarField rhoPhi
         #include "alphaEqn.H"
     }
 
-    if (pimple.nCorrPIMPLE() == 1)
-    {
-        interface.correct();
-    }
-
     rho == alpha1*rho1 + (scalar(1) - alpha1)*rho2;
 }
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
index 5ed807bbad45965dc8b018005214b76d07bb171d..59cb7f553e728a5400f41d2f2a489cb47caa4bd9 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
@@ -82,6 +82,11 @@ int main(int argc, char *argv[])
 
         #include "alphaEqnSubCycle.H"
 
+        if (pimple.nCorrPIMPLE() == 1)
+        {
+            interface.correct();
+        }
+
         turbulence->correct();
 
         // --- Pressure-velocity PIMPLE corrector loop
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
index 22c709c960afbe9c910bac8523cc81a800f3f833..6113aba01f1b42c4cda46109d3724f93fa4fdbda 100644
--- a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License