diff --git a/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp b/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp
index b9e53ca8fccbe28c4f13360106ef1847c341c1ac..88d4bfe2dd09f3ef05be38be8b1f04d704fdc6dd 100644
--- a/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp
+++ b/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp
@@ -147,17 +147,12 @@ FixedTimeStepping::FixedTimeStepping(
 {
     double t_curr = _t_initial;
 
+    if (!areRepeatDtPairsValid(repeat_dt_pairs))
+    {
+        OGS_FATAL("FixedTimeStepping: Couldn't construct object from data");
+    }
     for (auto const& [repeat, delta_t] : repeat_dt_pairs)
     {
-        if (repeat == 0)
-        {
-            OGS_FATAL("<repeat> is zero.");
-        }
-        if (delta_t <= 0.0)
-        {
-            OGS_FATAL("timestep <delta_t> is <= 0.0.");
-        }
-
         if (t_curr <= _t_end)
         {
             t_curr = addTimeIncrement(_dt_vector, repeat, delta_t, t_curr);
@@ -230,4 +225,28 @@ std::tuple<bool, double> FixedTimeStepping::next(
     return std::make_tuple(true, dt);
 }
 
+bool FixedTimeStepping::areRepeatDtPairsValid(
+    std::vector<RepeatDtPair> const& repeat_dt_pairs)
+{
+    if (repeat_dt_pairs.empty())
+    {
+        return false;
+    }
+
+    for (auto const& [repeat, delta_t] : repeat_dt_pairs)
+    {
+        if (repeat == 0)
+        {
+            ERR("FixedTimeStepping: <repeat> is zero.");
+            return false;
+        }
+        if (delta_t <= 0.0)
+        {
+            ERR("FixedTimeStepping: timestep <delta_t> is <= 0.0.");
+            return false;
+        }
+    }
+    return true;
+}
+
 }  // namespace NumLib
diff --git a/NumLib/TimeStepping/Algorithms/FixedTimeStepping.h b/NumLib/TimeStepping/Algorithms/FixedTimeStepping.h
index 3c0972294e34cd7d2f33e2b8e1c191b5aa9b458e..d12bade3295902aeabb1e186a2b16815ba6401d1 100644
--- a/NumLib/TimeStepping/Algorithms/FixedTimeStepping.h
+++ b/NumLib/TimeStepping/Algorithms/FixedTimeStepping.h
@@ -56,6 +56,9 @@ public:
                                   NumLib::TimeStep& ts_previous,
                                   NumLib::TimeStep& ts_current) override;
 
+    static bool areRepeatDtPairsValid(
+        std::vector<RepeatDtPair> const& repeat_dt_pairs);
+
 private:
     /// a vector of time step sizes
     std::vector<double> _dt_vector;