diff --git a/src/problem/problem.cpp b/src/problem/problem.cpp
index 2851bface141e8c476a4ff1d47ed61b3da82eefb..c793cd3e17257c5c207b37fd86d0675b9a0926a5 100644
--- a/src/problem/problem.cpp
+++ b/src/problem/problem.cpp
@@ -419,27 +419,27 @@ FrameBasePtr Problem::emplaceFrame(FrameType _frame_key_type, //
 
 TimeStamp Problem::getTimeStamp ( ) const
 {
-    if (not processor_is_motion_list_.empty() ) // Use most recent Motion processor data
-    {
-        TimeStamp  ts(0);
-        for (const auto& prc : processor_is_motion_list_)
-            if (prc->getTimeStamp() > ts)
+    TimeStamp  ts = TimeStamp::Invalid();
+
+    for (const auto& prc : processor_is_motion_list_)
+        if (prc->getTimeStamp().ok())
+            if ( (not ts.ok() ) or prc->getTimeStamp() > ts)
                 ts = prc->getTimeStamp();
-        return ts;
-    }
-    else
+
+
+    if (not ts.ok())
     {
         const auto& last_kf_or_aux = trajectory_ptr_->getLastKeyOrAuxFrame();
 
         if (last_kf_or_aux)
-            return last_kf_or_aux->getTimeStamp(); // Use last estimated frame's state
+            ts = last_kf_or_aux->getTimeStamp(); // Use last estimated frame's state
 
-        else
-        {
-            WOLF_WARN( "Problem has no Keyframe so no timestamp can be obtained!");
-            return TimeStamp::Invalid();
-        }
     }
+
+    if (not ts.ok())
+        WOLF_WARN( "Problem has nowhere to find a valid timestamp!");
+
+    return ts;
 }