diff --git a/Processes/Sibyll/Interaction.h b/Processes/Sibyll/Interaction.h
index 8fd2795867f1afcb0c04c2333a7ace0cebe8cdca..fb1334da22e571bc50cf576f5d7cdc0990b413b9 100644
--- a/Processes/Sibyll/Interaction.h
+++ b/Processes/Sibyll/Interaction.h
@@ -220,7 +220,7 @@ namespace corsika::process::sibyll {
           for (auto& psib : ss) {
             ++i;
             // skip particles that have decayed in Sibyll
-            if (abs(s_plist_.llist[i]) > 100) continue;
+	    if( psib.HasDecayed()) continue;
 
             // transform energy to lab. frame, primitve
             // compute beta_vec * p_vec
diff --git a/Processes/Sibyll/SibStack.h b/Processes/Sibyll/SibStack.h
index 7398d40003402d3c45aa83c4b2fc0eae2e9d1fa3..d78273822c700edaaae9e2c6bbefdfbfabb2a9e8 100644
--- a/Processes/Sibyll/SibStack.h
+++ b/Processes/Sibyll/SibStack.h
@@ -20,7 +20,7 @@ namespace corsika::process::sibyll {
     void Clear() { s_plist_.np = 0; }
 
     int GetSize() const { return s_plist_.np; }
-#warning check actual capacity of sibyll stack
+
     int GetCapacity() const { return 8000; }
 
     void SetId(const int i, const int v) { s_plist_.llist[i] = v; }
@@ -80,6 +80,10 @@ namespace corsika::process::sibyll {
     corsika::units::hep::EnergyType GetEnergy() const {
       return GetStackData().GetEnergy(GetIndex());
     }
+    bool HasDecayed() const
+    {
+      return abs(GetStackData().GetId(GetIndex()))>100 ? true : false;
+    }
     void SetPID(const int v) { GetStackData().SetId(GetIndex(), v); }
     corsika::process::sibyll::SibyllCode GetPID() const {
       return static_cast<corsika::process::sibyll::SibyllCode>(