diff --git a/matlab/dynare_solve.m b/matlab/dynare_solve.m
index 9ba3ea3f1fbdfe301d0d308309952926d45d2816..ce48f98748358c6fe9ddd9fd3e72abc064d7656c 100644
--- a/matlab/dynare_solve.m
+++ b/matlab/dynare_solve.m
@@ -78,6 +78,10 @@ if jacobian_flag
     wrong_initial_guess_flag = false;
     if ~all(isfinite(fvec)) || any(isinf(fjac(:))) || any(isnan((fjac(:)))) ...
             || any(~isreal(fvec)) || any(~isreal(fjac(:)))
+        if max(abs(fvec)) < tolf %return if initial value solves problem
+            info = 0; 
+            return;
+        end    
         disp('Randomize initial guess...')
         % Let's try random numbers for the variables initialized with the default value.
         wrong_initial_guess_flag = true;