diff --git a/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java b/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java
index 59fdd13c21c4d3bb5de795eaefac1ac2c48469c7..06a66d288ed5f44af838ee60c451bbe227b62dff 100644
--- a/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java
+++ b/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java
@@ -20,6 +20,7 @@ import org.apache.commons.math3.analysis.UnivariateFunction;
 import org.apache.commons.math3.analysis.differentiation.DerivativeStructure;
 import org.apache.commons.math3.analysis.solvers.BracketingNthOrderBrentSolver;
 import org.apache.commons.math3.analysis.solvers.UnivariateSolver;
+import org.apache.commons.math3.exception.NoBracketingException;
 import org.apache.commons.math3.geometry.euclidean.threed.FieldVector3D;
 import org.apache.commons.math3.geometry.euclidean.threed.Vector3D;
 import org.apache.commons.math3.linear.Array2DRowRealMatrix;
@@ -398,10 +399,14 @@ public class SensorMeanPlaneCrossing {
                 if (FastMath.abs(crossingLine - crossingLineHistory[j]) <= 1.0) {
                     // rare case: we are stuck in a loop!
                     // switch to a more robust (but slower) algorithm in this case
+                    final CrossingResult slowResult = slowFind(targetPV, crossingLine);
+                    if (slowResult == null) {
+                        return null;
+                    }
                     for (int k = cachedResults.length - 1; k > 0; --k) {
                         cachedResults[k] = cachedResults[k - 1];
                     }
-                    cachedResults[0] = slowFind(targetPV, crossingLine);
+                    cachedResults[0] = slowResult;
                     return cachedResults[0];
                 }
             }
@@ -513,6 +518,8 @@ public class SensorMeanPlaneCrossing {
                     evaluateLine(crossingLine, targetPV, scToBody.getBodyToInertial(date), scToBody.getScToInertial(date));
             return new CrossingResult(sensor.getDate(crossingLine), crossingLine, targetPV.getPosition(), targetDirection);
 
+        } catch (NoBracketingException nbe) {
+            return null;
         } catch (RuggedExceptionWrapper rew) {
             throw rew.getException();
         }