diff --git a/Processes/Sibyll/Decay.cc b/Processes/Sibyll/Decay.cc
index 1e0d1ca2b64be8db9444c94894fc6983a01e62ba..eec1f27f2239f6ba01bc4b77588313a62c6d518a 100644
--- a/Processes/Sibyll/Decay.cc
+++ b/Processes/Sibyll/Decay.cc
@@ -157,8 +157,6 @@ namespace corsika::process::sibyll {
     // remember position
     Point const decayPoint = p.GetPosition();
     TimeType const t0 = p.GetTime();
-    // remove original particle from corsika stack
-    p.Delete();
     // set all particles/hadrons unstable
     // setHadronsUnstable();
     setUnstable(pCode);
@@ -184,6 +182,8 @@ namespace corsika::process::sibyll {
     }
     // empty sibyll stack
     ss.Clear();
+    // remove original particle from corsika stack
+    p.Delete();
   }
 
 } // namespace corsika::process::sibyll
diff --git a/Processes/Sibyll/Interaction.cc b/Processes/Sibyll/Interaction.cc
index 5ccc1b743ce35f1e72a1ebd1e5cccba95a8d25e9..4c5f6044828cbeb651734158b7a58c81c4aaf477 100644
--- a/Processes/Sibyll/Interaction.cc
+++ b/Processes/Sibyll/Interaction.cc
@@ -320,9 +320,6 @@ namespace corsika::process::sibyll {
         sib_list_(print_unit);
         fNucCount += get_nwounded() - 1;
 
-        // delete current particle
-        p.Delete();
-
         // add particles from sibyll to stack
         // link to sibyll stack
         SibStack ss;
@@ -356,6 +353,8 @@ namespace corsika::process::sibyll {
              << ", Plab_final=" << (Plab_final / 1_GeV).GetComponents() << endl;
       }
     }
+    // delete current particle
+    p.Delete();
     return process::EProcessReturn::eOk;
   }