diff --git a/matlab/+occbin/DSGE_smoother.m b/matlab/+occbin/DSGE_smoother.m index 3ed80498ca5c29e803c93ac8abced89d9213c628..59175ccf13295ba305348b768c507ea5d4b97ec4 100644 --- a/matlab/+occbin/DSGE_smoother.m +++ b/matlab/+occbin/DSGE_smoother.m @@ -144,6 +144,11 @@ opts_simul.init_regime=regime_history; % use realtime regime for guess, to avoid options_.occbin.simul=opts_simul; options_.noprint = true; [~, out, ss] = occbin.solver(M_,oo_,options_); +if out.error_flag + fprintf('Occbin smoother:: simulation within smoother did not converge.\n') + print_info(error_flag, false, options_) + return; +end regime_history = out.regime_history; if options_.smoother_redux occbin_options.opts_simul.restrict_state_space =1; @@ -204,6 +209,11 @@ while is_changed && maxiter>iter && ~is_periodic opts_simul.endo_init = alphahat0(oo_.dr.inv_order_var,1); options_.occbin.simul=opts_simul; [~, out, ss] = occbin.solver(M_,oo_,options_); + if out.error_flag + fprintf('Occbin smoother:: simulation within smoother did not converge.\n') + print_info(error_flag, false, options_) + return; + end regime_history = out.regime_history; TT = ss.T(oo_.dr.order_var,oo_.dr.order_var,:); RR = ss.R(oo_.dr.order_var,:,:);