diff --git a/matlab/discretionary_policy_engine.m b/matlab/discretionary_policy_engine.m
index 05c781ae4abccd0cbabfcf55b979f45f8d829abc..bcf48267ce2a2cb0aa19c641ccbff5b284db4be3 100644
--- a/matlab/discretionary_policy_engine.m
+++ b/matlab/discretionary_policy_engine.m
@@ -112,9 +112,9 @@ F1=F10;
 while 1
     iter=iter+1;
     P=SylvesterDoubling(W+beta*F1'*Q*F1,beta*H1',H1,discretion_tol,solve_maxit);
-    if any(any(isnan(P)))
+    if any(any(isnan(P))) || any(any(isinf(P))) 
         P=SylvesterHessenbergSchur(W+beta*F1'*Q*F1,beta*H1',H1);
-        if any(any(isnan(P)))
+        if any(any(isnan(P))) || any(any(isinf(P)))
             retcode=2;
             return
         end