diff --git a/matlab/evaluate_steady_state.m b/matlab/evaluate_steady_state.m
index 3e73c3c57098beac6f611ffed2aa3f2068a5ebca..c979e0d9c6fec136b3ffda1fe0f677f2bba16459 100644
--- a/matlab/evaluate_steady_state.m
+++ b/matlab/evaluate_steady_state.m
@@ -81,7 +81,8 @@ function [ys,params,info] = evaluate_steady_state(ys_init,M,options,oo,steadysta
         end
     else
         % block or bytecode
-        [ys,check] = dynare_solve_block_or_bytecode(ys_init,exo_ss, params, options, M);
+        [ys,check] = dynare_solve_block_or_bytecode(ys_init,exo_ss, params, ...
+                                                    options, M);
     end
 
     if check
diff --git a/matlab/homotopy1.m b/matlab/homotopy1.m
index f0913b86bb3bd0ff9f219c257f245f9b2d29bf23..30e8ef13785f6e9aaff0d36cd3607ba558d87fde 100644
--- a/matlab/homotopy1.m
+++ b/matlab/homotopy1.m
@@ -77,5 +77,12 @@ for i=1:step_nbr+1
     oo_.exo_steady_state(values(ix,2)) = points(ix,i);
     oo_.exo_det_steady_state(values(ixd,2)) = points(ixd,i);
 
-    oo_.steady_state = steady_(M_,options_,oo_);
+    [steady_state,M_.params,info] = steady_(M_,options_,oo_);
+    if info(1) == 0
+        % if homotopy step is not successful, current values of steady
+        % state are not modified
+        oo_.steady_state = steady_state;
+    else 
+        break
+    end
 end
diff --git a/matlab/steady.m b/matlab/steady.m
index 8f3a72fa7a9a525d8722fa6ebe89f501f7f072eb..67c49b53c7f83edd162f6080fb7e0b4c5042ad0d 100644
--- a/matlab/steady.m
+++ b/matlab/steady.m
@@ -53,12 +53,16 @@ switch options_.homotopy_mode
     homotopy3(options_.homotopy_values, options_.homotopy_steps);
 end
 
-[oo_.steady_state,M_.params,info] = steady_(M_,options_,oo_);
+[steady_state,M_.params,info] = steady_(M_,options_,oo_);
 
-if info(1) && options_.steady.stop_on_error
+if info(1) == 0
+    oo_.steady_state = steady_state;
+    disp_steady_state(M_,oo_);
+elseif options_.steady.stop_on_error
     print_info(info,options_.noprint);
+else
+    disp(['Warning: steady state could not be computed but steady.stop_on_error ' ...
+          '== 0, so I continue'])
 end
 
-disp_steady_state(M_,oo_);
-
 M_.Sigma_e = Sigma_e;
diff --git a/preprocessor/DynareBison.yy b/preprocessor/DynareBison.yy
index 39878f99ecd0182ed549483f836e6ed8a634f026..a246d5c3963cff2ffc4767641364558617314e0d 100644
--- a/preprocessor/DynareBison.yy
+++ b/preprocessor/DynareBison.yy
@@ -2502,7 +2502,7 @@ o_median : MEDIAN { driver.option_num("ms.median","1"); }
 o_regimes : REGIMES { driver.option_num("ms.regimes","1"); };
 o_regime : REGIME EQUAL INT_NUMBER { driver.option_num("ms.regime",$3); };
 o_data_obs_nbr : DATA_OBS_NBR EQUAL INT_NUMBER { driver.option_num("ms.forecast_data_obs",$3); };
-o_stop_on_error: STOP_ON_ERROR EQUAL INT_NUMBER { driver.option_num("steady.stop_on_eror",$3); };
+o_stop_on_error: STOP_ON_ERROR EQUAL INT_NUMBER { driver.option_num("steady.stop_on_error",$3); };
 o_discretionary_tol: DISCRETIONARY_TOL EQUAL non_negative_number { driver.option_num("discretionary_tol",$3); };
 
 range : symbol ':' symbol