diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
index b72af41e731114200cd0ccad826095f60c5b2256..486c0959dddfb299e64c1c7747ebc2ff3f98a62f 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
@@ -99,6 +99,8 @@ void Foam::KinematicCloud<ParcelType>::evolveCloud()
 
     if (nSubCycles > 1)
     {
+        Info<< "    " << nSubCycles << " move-collide subCycles" << endl;
+
         subCycleTime moveCollideSubCycle
         (
             const_cast<Time&>(this->db().time()),
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C
index 76ca569acd32c28908e6ce0f53250e62fbafec63..e4c4c299e3f1f796162177cbb412a816347c904b 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C
@@ -521,24 +521,29 @@ Foam::PairCollision<CloudType>::~PairCollision()
 template<class CloudType>
 Foam::label Foam::PairCollision<CloudType>::nSubCycles() const
 {
+    label nSubCycles = 1;
+
     if (pairModel_->controlsTimestep())
     {
-        label nSubCycles = returnReduce
+        label nPairSubCycles = returnReduce
         (
             pairModel_->nSubCycles(), maxOp<label>()
         );
 
-        if(nSubCycles > 1)
-        {
-            Info<< "    " << nSubCycles << " move-collide subCycles" << endl;
-        }
-
-        return nSubCycles;
+        nSubCycles = max(nSubCycles, nPairSubCycles);
     }
-    else
+
+    if (wallModel_->controlsTimestep())
     {
-        return 1;
+        label nWallSubCycles = returnReduce
+        (
+            wallModel_->nSubCycles(), maxOp<label>()
+        );
+
+        nSubCycles = max(nSubCycles, nWallSubCycles);
     }
+
+    return nSubCycles;
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/WallModel/WallSpringSliderDashpot/WallSpringSliderDashpot.C b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/WallModel/WallSpringSliderDashpot/WallSpringSliderDashpot.C
index 2c86e64ad401fa896ee676fe6417ab5dfcbef3dc..207e657826728a5f8f8b5a1e94079e43d0e90eb2 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/WallModel/WallSpringSliderDashpot/WallSpringSliderDashpot.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/WallModel/WallSpringSliderDashpot/WallSpringSliderDashpot.C
@@ -30,12 +30,12 @@ License
 template <class CloudType>
 void Foam::WallSpringSliderDashpot<CloudType>::findMinMaxProperties
 (
-    scalar& RMin,
+    scalar& rMin,
     scalar& rhoMax,
     scalar& UMagMax
 ) const
 {
-    RMin = VGREAT;
+    rMin = VGREAT;
     rhoMax = -VGREAT;
     UMagMax = -VGREAT;
 
@@ -44,7 +44,7 @@ void Foam::WallSpringSliderDashpot<CloudType>::findMinMaxProperties
         const typename CloudType::parcelType& p = iter();
 
         // Finding minimum diameter to avoid excessive arithmetic
-        RMin = min(p.d(), RMin);
+        rMin = min(p.d(), rMin);
 
         rhoMax = max(p.rho(), rhoMax);
 
@@ -57,11 +57,8 @@ void Foam::WallSpringSliderDashpot<CloudType>::findMinMaxProperties
 
     // Transform the minimum diameter into minimum radius
     //     rMin = dMin/2
-    // then rMin into minimum R,
-    //     1/RMin = 1/rMin + 1/rMin,
-    //     RMin = rMin/2 = dMin/4
 
-    RMin /= 4.0;
+    rMin /= 2.0;
 }
 
 
@@ -109,27 +106,31 @@ bool Foam::WallSpringSliderDashpot<CloudType>::controlsTimestep() const
 template<class CloudType>
 Foam::label Foam::WallSpringSliderDashpot<CloudType>::nSubCycles() const
 {
-    // if (!(this->owner().size()))
-    // {
-    //     return 1;
-    // }
+    if (!(this->owner().size()))
+    {
+        return 1;
+    }
 
-    // scalar RMin;
-    // scalar rhoMax;
-    // scalar UMagMax;
+    scalar rMin;
+    scalar rhoMax;
+    scalar UMagMax;
 
-    // findMinMaxProperties(RMin, rhoMax, UMagMax);
+    findMinMaxProperties(rMin, rhoMax, UMagMax);
+
+    scalar pNu = this->owner().constProps().poissonsRatio();
 
-    // // Note:  pi^(7/5)*(5/4)^(2/5) = 5.429675
-    // scalar minCollisionDeltaT =
-    //     5.429675
-    //    *RMin
-    //    *pow(rhoMax/(Estar_*sqrt(UMagMax) + VSMALL), 0.4)
-    //    /collisionResolutionSteps_;
+    scalar pE = this->owner().constProps().youngsModulus();
+
+    scalar Estar = 1/((1 - sqr(pNu))/pE + (1 - sqr(nu_))/E_);
 
-    // return ceil(this->owner().time().deltaTValue()/minCollisionDeltaT);
+    // Note:  pi^(7/5)*(5/4)^(2/5) = 5.429675
+    scalar minCollisionDeltaT =
+        5.429675
+       *rMin
+       *pow(rhoMax/(Estar*sqrt(UMagMax) + VSMALL), 0.4)
+       /collisionResolutionSteps_;
 
-    return 1;
+    return ceil(this->owner().time().deltaTValue()/minCollisionDeltaT);
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/WallModel/WallSpringSliderDashpot/WallSpringSliderDashpot.H b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/WallModel/WallSpringSliderDashpot/WallSpringSliderDashpot.H
index 49a99397f2aeff9ba44290defcf6c227beb04984..e01ae072eea08b247df241edb5486f8eb8d1fb1d 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/WallModel/WallSpringSliderDashpot/WallSpringSliderDashpot.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/WallModel/WallSpringSliderDashpot/WallSpringSliderDashpot.H
@@ -76,7 +76,7 @@ class WallSpringSliderDashpot
         //- allowable timestep
         void findMinMaxProperties
         (
-            scalar& RMin,
+            scalar& rMin,
             scalar& rhoMax,
             scalar& vMagMax
         ) const;