diff --git a/matlab/osr.m b/matlab/osr.m
index fcd5b507b506dd57f6c81a7f474a6eaf1006a62c..d579c63ec90b20c6dc650c1ed47b300175ec01d5 100644
--- a/matlab/osr.m
+++ b/matlab/osr.m
@@ -55,9 +55,11 @@ for i=1:np
     i_params(i) = strmatch(str{:}, M_.param_names, 'exact');
 end
 
-skipline()
-disp('OPTIMAL SIMPLE RULE')
-skipline()
+if ~options_.noprint
+    skipline()
+    disp('OPTIMAL SIMPLE RULE')
+    skipline()
+end
 osr_res = osr1(i_params,i_var,W);
 
 stoch_simul(var_list);
\ No newline at end of file
diff --git a/matlab/osr1.m b/matlab/osr1.m
index 641e5fda9d5e230363a23c6a8fd397fb5b6d6fff..cf13da166d40e449c149e8df76ef72d90323086b 100644
--- a/matlab/osr1.m
+++ b/matlab/osr1.m
@@ -41,6 +41,7 @@ iyv = iyv(:);
 iyr0 = find(iyv) ;
 it_ = M_.maximum_lag + 1 ;
 
+osr_res.error_indicator = 1; %initialize indicator
 
 if M_.exo_nbr == 0
     oo_.exo_steady_state = [] ;
@@ -101,10 +102,12 @@ i_var=unique(i_var);
 [loss,info,exit_flag,vx]=osr_obj(t0,i_params,inv_order_var(i_var),weights(i_var,i_var));
 if info~=0
    print_info(info, options_.noprint, options_);
-else
-   fprintf('\nOSR: Initial value of the objective function: %g \n\n',loss);
+   else 
+       if ~options_.noprint
+           fprintf('\nOSR: Initial value of the objective function: %g \n\n',loss);
+       end
 end
-if isinf(loss)
+if ~options_.noprint && isinf(loss) 
    fprintf('\nOSR: The initial value of the objective function is infinite.\n');
    fprintf('\nOSR: Check whether the unconditional variance of a target variable is infinite\n');
    fprintf('\nOSR: due to the presence of a unit root.\n');
@@ -136,12 +139,17 @@ for i=1:length(i_params)
     osr_res.optim_params.(deblank(M_.param_names(i_params(i),:))) = p(i);
 end
 
-skipline()
-disp('OPTIMAL VALUE OF THE PARAMETERS:')
-skipline()
-for i=1:np
-    disp(sprintf('%16s %16.6g\n',M_.param_names(i_params(i),:),p(i)))
+if ~options_.noprint
+    skipline()
+    disp('OPTIMAL VALUE OF THE PARAMETERS:')
+    skipline()
+    for i=1:np
+        disp(sprintf('%16s %16.6g\n',M_.param_names(i_params(i),:),p(i)))
+    end
+    disp(sprintf('Objective function : %16.6g\n',f));
+    skipline()
 end
-disp(sprintf('Objective function : %16.6g\n',f));
-skipline()
-[oo_.dr,info,M_,options_,oo_] = resol(0,M_,options_,oo_);
\ No newline at end of file
+[oo_.dr,info,M_,options_,oo_] = resol(0,M_,options_,oo_);
+if ~info
+    osr_res.error_indicator=0;
+end
\ No newline at end of file