diff --git a/corsika/detail/framework/utility/QuarticSolver.inl b/corsika/detail/framework/utility/QuarticSolver.inl
index 764bc3a85e0e127e595801418cb2809ae5d617c1..4e02b5c0d1dedc4abaf930c0d43f57bdd902bbf4 100644
--- a/corsika/detail/framework/utility/QuarticSolver.inl
+++ b/corsika/detail/framework/utility/QuarticSolver.inl
@@ -112,8 +112,7 @@ namespace corsika {
     }
     CORSIKA_LOG_TRACE("check m={}", m);
     if (m == 0) { return {0}; }
-
-    CORSIKA_LOG_TRACE("check m={}", m);
+    if (m < 0) { return {}; } // this is a rare numerical instability
 
     long double const quad_term1 = p / 2 + m;
     long double const quad_term2 = std::sqrt(2 * m);