diff --git a/Environment/NuclearComposition.h b/Environment/NuclearComposition.h
index 491f25a251ed7f6c9d5c1ccbde06ea225e88f47e..d97ba380880ddf018e685d010e688a9f639bd0ac 100644
--- a/Environment/NuclearComposition.h
+++ b/Environment/NuclearComposition.h
@@ -64,9 +64,13 @@ namespace corsika::environment {
         , fComponents(pComponents)
         , fAvgMassNumber(std::inner_product(
               pComponents.cbegin(), pComponents.cend(), pFractions.cbegin(), 0.,
-              [](double x, double y) { return x + y; },
-              [](auto const& compID, auto const& fraction) {
-                return corsika::particles::GetNucleusA(compID) * fraction;
+              std::plus<double>(), [](auto const compID, auto const fraction) -> double {
+                if (particles::IsNucleus(compID)) {
+                  return particles::GetNucleusA(compID) * fraction;
+                } else {
+                  return particles::GetMass(compID) /
+                         units::si::ConvertSIToHEP(units::constants::u) * fraction;
+                }
               })) {
       assert(pComponents.size() == pFractions.size());
       auto const sumFractions =