diff --git a/matlab/+occbin/match_function.m b/matlab/+occbin/match_function.m
index 959f3c3c2d7ad3fd0104da94a2d546e5b4b90007..ae26236201fa04ca4d6f3ce21b6f129421cb5064 100644
--- a/matlab/+occbin/match_function.m
+++ b/matlab/+occbin/match_function.m
@@ -37,19 +37,18 @@ options_.occbin.simul=opts_simul;
 options_.occbin.simul.full_output=1;
 options_.noprint = 1;
 [~, out, ss] = occbin.solver(M_,oo_,options_);
-state_out= out.piecewise(1,:)' - out.ys;
-
-E = ss.R(:,opts_simul.exo_pos);
-grad = ss.R(opts_simul.varobs_id,opts_simul.exo_pos);
 
 nobs = size(obs_list,1);
 resids = zeros(nobs,1);
 
 if ~out.error_flag
-    % -- add observation block in model ---%
-    %   % put in model file
+    state_out= out.piecewise(1,:)' - out.ys;
+    
+    E = ss.R(:,opts_simul.exo_pos);
+    grad = ss.R(opts_simul.varobs_id,opts_simul.exo_pos);
     resids = (out.piecewise(1,opts_simul.varobs_id)-current_obs)'; %-out.endo_ss.(obs_list{this_obs});
 else
+    grad = NaN(length(opts_simul.varobs_id),length(opts_simul.exo_pos));
     resids = resids+100;
 end
 
diff --git a/matlab/+occbin/solver.m b/matlab/+occbin/solver.m
index 125f28d909a06e20279d53f9c5614c36ff7af832..ec053af49dd643b1f05c8ee91177f0214a088062 100644
--- a/matlab/+occbin/solver.m
+++ b/matlab/+occbin/solver.m
@@ -68,7 +68,6 @@ end
 out.error_flag=error_flag;
 if error_flag
     print_info(error_flag, options_.noprint, options_)
-    out=[];
     return;
 end