diff --git a/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl b/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl
index 009be7c63610710d1ab7c1d0113518ff38dc7b68..4542f2e56289d08f57bf2f794681fa3598a80f1d 100644
--- a/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl
+++ b/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl
@@ -106,7 +106,15 @@ namespace corsika {
       LengthType const gyroradius = convert_HEP_to_SI<MassType::dimension_type>(p_perp) *
                                     constants::c / (abs(charge) * magnitudeB);
 
-      double const maxRadians = 0.01; // maximal allowed deflection
+      if (gyroradius > 1e9_m) {
+        CORSIKA_LOG_WARN(
+            "CurvedLeapFrog is not very stable for extremely high gyroradius steps. "
+            "Rg={} -> straight tracking.",
+            gyroradius);
+        return getLinearTrajectory(particle);
+      }
+
+      double const maxRadians = 0.01;
       LengthType const steplimit = 2 * cos(maxRadians) * sin(maxRadians) * gyroradius;
       TimeType const steplimit_time = steplimit / initialVelocity.getNorm();
       CORSIKA_LOG_DEBUG("gyroradius {}, steplimit: {} = {}", gyroradius, steplimit,