diff --git a/applications/solvers/compressible/rhoPimpleFoam/createFields.H b/applications/solvers/compressible/rhoPimpleFoam/createFields.H
index 8079428225be4c497065ec40e6679df97d007252..10ed80d25a3ab1a05e7c327b5d96e39d97db821f 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/createFields.H
+++ b/applications/solvers/compressible/rhoPimpleFoam/createFields.H
@@ -69,8 +69,7 @@ volScalarField dpdt
     dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
 );
 
-Info<< "Creating field kinetic energy K\n" << endl;
-volScalarField K("K", 0.5*magSqr(U));
+#include "createK.H"
 
 #include "createMRF.H"
 
diff --git a/src/finiteVolume/cfdTools/general/include/createK.H b/src/finiteVolume/cfdTools/general/include/createK.H
new file mode 100644
index 0000000000000000000000000000000000000000..a51850a813d63e4d249432f7ecbe8445ed5bcbbf
--- /dev/null
+++ b/src/finiteVolume/cfdTools/general/include/createK.H
@@ -0,0 +1,16 @@
+Info<< "Creating field kinetic energy K\n" << endl;
+volScalarField K("K", 0.5*magSqr(U));
+
+if (U.nOldTimes())
+{
+    volVectorField* Uold = &U.oldTime();
+    volScalarField* Kold = &K.oldTime();
+    *Kold == 0.5*magSqr(*Uold);
+
+    while (Uold->nOldTimes())
+    {
+        Uold = &Uold->oldTime();
+        Kold = &Kold->oldTime();
+        *Kold == 0.5*magSqr(*Uold);
+    }
+}