diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.C
index fd7bf31..70da8f4 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.C
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.C
@@ -38,6 +38,7 @@ Foam::cloudSolution::cloudSolution
     dict_(dict),
     active_(dict.lookup("active")),
     transient_(false),
+    subCycles_(1),
     calcFrequency_(1),
     maxCo_(0.3),
     iter_(1),
@@ -64,6 +65,7 @@ Foam::cloudSolution::cloudSolution
     dict_(cs.dict_),
     active_(cs.active_),
     transient_(cs.transient_),
+    subCycles_(cs.subCycles_),
     calcFrequency_(cs.calcFrequency_),
     maxCo_(cs.maxCo_),
     iter_(cs.iter_),
@@ -85,6 +87,7 @@ Foam::cloudSolution::cloudSolution
     dict_(dictionary::null),
     active_(false),
     transient_(false),
+    subCycles_(1),
     calcFrequency_(0),
     maxCo_(GREAT),
     iter_(0),
@@ -123,6 +126,12 @@ void Foam::cloudSolution::read()
                 >> resetSourcesOnStartup_;
         }
     }
+    else
+    {
+        dict_.lookup("subCycles") >> subCycles_;
+        subCycles_ = max(subCycles_,1);
+//         dict_.lookupOrDefault<int>("subCycles",1) >> subCycles_;
+    }
 
     if (coupled_)
     {
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.H
index e155abc..92596a8 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.H
@@ -65,6 +65,10 @@ class cloudSolution
         //- Transient flag
         Switch transient_;
 
+        //- Sub cycles - cloud steps per carrier step
+        //  NOTE: Transient operation only
+        label subCycles_;
+
         //- Calculation frequency - carrier steps per cloud step
         //  NOTE: Steady operation only
         label calcFrequency_;
@@ -156,6 +160,9 @@ public:
             //- Return const access to the steady flag
             inline const Switch steadyState() const;
 
+            //- Return const access to the sub cycles
+            inline label subCycles() const;
+
             //- Return const access to the calculation frequency
             inline label calcFrequency() const;
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolutionI.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolutionI.H
index 6280b97..ad9e64c 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolutionI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolutionI.H
@@ -71,6 +71,12 @@ inline const Foam::Switch Foam::cloudSolution::steadyState() const
 }
 
 
+inline Foam::label Foam::cloudSolution::subCycles() const
+{
+    return subCycles_;
+}
+
+
 inline Foam::label Foam::cloudSolution::calcFrequency() const
 {
     return calcFrequency_;
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
index 7ec52b1..cbd3417 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
@@ -275,7 +275,7 @@ bool Foam::KinematicParcel<ParcelType>::move
     const scalar maxCo = td.cloud().solution().maxCo();
 
     scalar tEnd = (1.0 - p.stepFraction())*trackTime;
-    const scalar dtMax = tEnd;
+    const scalar dtMax = tEnd/td.cloud().solution().subCycles();
 
     while (td.keepParticle && !td.switchProcessor && tEnd > ROOTVSMALL)
     {
