diff --git a/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.cpp b/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.cpp
index 54e4ae16e69b69524994a97885af469998f03f9c..ed545e4e46f7676cb40b713a5433edebca4a6982 100644
--- a/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.cpp
+++ b/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.cpp
@@ -34,8 +34,7 @@ bool EvolutionaryPIDcontroller::next(const double solution_error)
         double h_new = (e_n > zero_threshlod) ? _ts_current.dt() * _tol / e_n
                                               : 0.5 * _ts_current.dt();
 
-        h_new =
-            limitStepSize(h_new, _ts_current.dt(), is_previous_step_accepted);
+        h_new = limitStepSize(h_new, is_previous_step_accepted);
         h_new = checkSpecificTimeReached(h_new);
 
         _ts_current = _ts_prev;
@@ -95,7 +94,7 @@ bool EvolutionaryPIDcontroller::next(const double solution_error)
             }
         }
 
-        h_new = limitStepSize(h_new, h_n, is_previous_step_accepted);
+        h_new = limitStepSize(h_new, is_previous_step_accepted);
         h_new = checkSpecificTimeReached(h_new);
         _dt_vector.push_back(h_new);
 
@@ -110,10 +109,13 @@ bool EvolutionaryPIDcontroller::next(const double solution_error)
 }
 
 double EvolutionaryPIDcontroller::limitStepSize(
-    const double h_new, const double h_n,
-    const bool previous_step_accepted) const
+    const double h_new, const bool previous_step_accepted) const
 {
+    const double h_n = _ts_current.dt();
+    // Forced the computed time step size in the given range
+    // (see the formulas in the documentation of the class)
     const double h_in_range = std::max(_h_min, std::min(h_new, _h_max));
+    // Limit the step size change ratio.
     double limited_h =
         std::max(_rel_h_min * h_n, std::min(h_in_range, _rel_h_max * h_n));
 
diff --git a/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.h b/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.h
index 5f0581b96710051a5048ed639e5d18c7e1130acd..971de4ef5cef3449b5b36aca308f9f0a680aa49f 100644
--- a/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.h
+++ b/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.h
@@ -115,7 +115,18 @@ private:
 
     bool _is_accepted;
 
-    double limitStepSize(const double h_new, const double h_n,
+    /**
+     * Forced the computed time step size in the given range
+     * (see the formulas in the documentation of the class)
+     * or use the half of the previous time step size under some other
+     * constrains.
+     * @param h_new                   The computed time step size.
+     * @param previous_step_accepted  An indicator for whether the previous time
+     *                                step is rejected.
+     * @return                        The new time step after apply
+     *                                the constrains.
+     */
+    double limitStepSize(const double h_new,
                          const bool previous_step_accepted) const;
 
     double checkSpecificTimeReached(const double h_new);