diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.cxx
index 77dffaa07ee26ea2743a904480c553619a7b160b..3a1122d04ddbc3b4f3a3709be56d8c10938126da 100644
--- a/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.cxx
+++ b/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.cxx
@@ -225,15 +225,22 @@ StatusCode CKF2::execute() {
     else return false;
   });
 
+  allTracks.remove_if([&](const TrackInfo &p) {
+    return (p.nMeasurements <= 12);
+  });
+
   while (not allTracks.empty()) {
     TrackInfo selected = allTracks.front();
+    allTracks.erase(allTracks.begin());
     
     auto destProxy = selectedTracks.getTrack(selectedTracks.addTrack());
     destProxy.copyFrom(tracks.getTrack(selected.index), true);  // make sure we copy track states!
-
-    allTracks.remove_if([&](const TrackInfo &p) {
-      return (p.nMeasurements <= 12) || ((p.clusterSet & selected.clusterSet).count() > 6);
-    });
+    
+    if(not allTracks.empty()){ 
+      allTracks.remove_if([&](const TrackInfo &p) {
+        return ((p.clusterSet & selected.clusterSet).count() > 6);
+      });
+    }
   }
   ATH_MSG_DEBUG("There are " << selectedTracks.size() << " selected tracks for this event.");