diff --git a/corsika/detail/modules/energy_loss/BetheBlochPDG.inl b/corsika/detail/modules/energy_loss/BetheBlochPDG.inl
index 75d12f949d284d9e6e0ab37d8932b6452032c3a7..5dcd7de4f6f092a5d5e003a2dbce3ce29390cb12 100644
--- a/corsika/detail/modules/energy_loss/BetheBlochPDG.inl
+++ b/corsika/detail/modules/energy_loss/BetheBlochPDG.inl
@@ -211,7 +211,11 @@ namespace corsika {
     int binEnd = grammageEnd / dX_;
     if (binEnd < 0) binEnd = 0;
     if (binEnd > maxBin) binEnd = maxBin;
-
+    // in upward going showers binEnd may be smaller than binStart, but we don't care:
+    if (binStart>binEnd) {
+      std::swap(binStart, binEnd);
+    }
+    
     CORSIKA_LOG_DEBUG("energy deposit of -dE={} between {} and {}", -dE, grammageStart,
                       grammageEnd);