diff --git a/Processes/Sibyll/ParticleConversion.cc b/Processes/Sibyll/ParticleConversion.cc
index 040b35b2c482fe8da9f0cd7b1c4602f6d15c3dc2..b342830c0760ae0c3a1c437e2b1500c08799f7f4 100644
--- a/Processes/Sibyll/ParticleConversion.cc
+++ b/Processes/Sibyll/ParticleConversion.cc
@@ -20,7 +20,10 @@ corsika::units::si::HEPMassType corsika::process::sibyll::GetSibyllMass(
   if (pCode == corsika::particles::Code::Nucleus)
     throw std::runtime_error("Cannot GetMass() of particle::Nucleus -> unspecified");
   auto sCode = ConvertToSibyllRaw(pCode);
-  return sqrt(get_sibyll_mass2(sCode)) * 1_GeV;
+  if (sCode == 0)
+    return std::numeric_limits<double>::quiet_NaN() * 1_GeV;
+  else
+    return sqrt(get_sibyll_mass2(sCode)) * 1_GeV;
 }
 
 // const std::map<sibyll::PID, ParticleProperties::InternalParticleCode>
diff --git a/Processes/Sibyll/sibyll2.3c.cc b/Processes/Sibyll/sibyll2.3c.cc
index 7cb2c027dc45948c5db2eeae473bc883305b604b..52cfd7c26188ae652ed09805e9d67123fc20f7bc 100644
--- a/Processes/Sibyll/sibyll2.3c.cc
+++ b/Processes/Sibyll/sibyll2.3c.cc
@@ -14,7 +14,7 @@
 #include <random>
 
 int get_nwounded() { return s_chist_.nwd; }
-double get_sibyll_mass2(int& id) { return s_mass1_.am2[id]; }
+double get_sibyll_mass2(int& id) { return s_mass1_.am2[abs(id) - 1]; }
 
 double s_rndm_(int&) {
   static corsika::random::RNG& rng =
diff --git a/Processes/Sibyll/testSibyll.cc b/Processes/Sibyll/testSibyll.cc
index 2fef7138f31d07d70a070c0011d9bfb1fb6f2b08..553c980c6c52a7ca1eb1d6a7bfa653296fb5d2a5 100644
--- a/Processes/Sibyll/testSibyll.cc
+++ b/Processes/Sibyll/testSibyll.cc
@@ -40,7 +40,6 @@ TEST_CASE("Sibyll", "[processes]") {
     REQUIRE(process::sibyll::ConvertToSibyllRaw(particles::Proton::GetCode()) == 13);
     REQUIRE(process::sibyll::ConvertToSibyll(particles::XiStarC0::GetCode()) ==
             process::sibyll::SibyllCode::XiStarC0);
-
   }
 
   SECTION("canInteractInSibyll") {