diff --git a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C
index 7ff31db0eca3fa6caae875008875c13f106b89e8..4cd984f0ccc59999e923e9214516db3f18cc238b 100644
--- a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C
+++ b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.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
@@ -126,7 +126,8 @@ Foam::pimpleControl::pimpleControl(fvMesh& mesh)
     nCorrPIMPLE_(0),
     nCorrPISO_(0),
     corrPISO_(0),
-    turbOnFinalIterOnly_(true)
+    turbOnFinalIterOnly_(true),
+    converged_(false)
 {
     read();
 
@@ -194,12 +195,27 @@ bool Foam::pimpleControl::loop()
     }
 
     bool completed = false;
-    if (criteriaSatisfied())
+    if (converged_ || criteriaSatisfied())
     {
-        Info<< algorithmName_ << ": converged in " << corr_ - 1 << " iterations"
-            << endl;
-        completed = true;
-        corr_ = 0;
+        if (converged_)
+        {
+            Info<< algorithmName_ << ": converged in " << corr_ - 1
+                << " iterations" << endl;
+
+            mesh_.data::remove("finalIteration");
+            corr_ = 0;
+            converged_ = false;
+
+            completed = true;
+        }
+        else
+        {
+            Info<< algorithmName_ << ": iteration " << corr_ << endl;
+            storePrevIterFields();
+
+            mesh_.data::add("finalIteration", true);
+            converged_ = true;
+        }
     }
     else
     {
diff --git a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.H b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.H
index 9a5912e4fb703a655fbbb06dc0b8c9f6ecd60309..6cb9d3a21f652df26ddf6251473c7281de0e7611 100644
--- a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.H
+++ b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.H
@@ -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
@@ -66,6 +66,9 @@ protected:
             //- Flag to indicate whether to only solve turbulence on final iter
             bool turbOnFinalIterOnly_;
 
+            //- Converged flag
+            bool converged_;
+
 
     // Protected Member Functions
 
diff --git a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControlI.H b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControlI.H
index 1fe609873175cd745d297b3ba2133b151348dcfc..1d8917de89b34dfa38f65ef411f555de35ffe303 100644
--- a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControlI.H
+++ b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControlI.H
@@ -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
@@ -73,14 +73,14 @@ inline bool Foam::pimpleControl::storeInitialResiduals() const
 
 inline bool Foam::pimpleControl::finalIter() const
 {
-    return corr_ == nCorrPIMPLE_;
+    return converged_ || (corr_ == nCorrPIMPLE_);
 }
 
 
 inline bool Foam::pimpleControl::finalInnerIter() const
 {
     return
-       corr_ == nCorrPIMPLE_
+       finalIter()
     && corrPISO_ == nCorrPISO_
     && corrNonOrtho_ == nNonOrthCorr_ + 1;
 }