From a2c60dba110bd7dd986d0e3c7130ab4e68e0f902 Mon Sep 17 00:00:00 2001
From: Johannes Pfeifer <jpfeifer@gmx.de>
Date: Fri, 20 Aug 2021 11:28:46 +0200
Subject: [PATCH] simult_.m: simulate user-requested order with k_order_solver

Also prevent inconsistent simulations
---
 matlab/simult_.m | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/matlab/simult_.m b/matlab/simult_.m
index 8e63462311..fd67254f7e 100644
--- a/matlab/simult_.m
+++ b/matlab/simult_.m
@@ -53,8 +53,12 @@ if ~options_.k_order_solver || (options_.k_order_solver && options_.pruning) %if
 end
 
 if options_.k_order_solver && ~options_.pruning % Call dynare++ routines.
-    ex_ = [zeros(M_.maximum_lag,M_.exo_nbr); ex_];
-    y_ = dynare_simul_(options_.order,M_.nstatic,M_.npred,M_.nboth,M_.nfwrd,exo_nbr, ...
+    ex_ = [zeros(M_.maximum_lag,M_.exo_nbr); ex_];     
+    if options_.order~=iorder
+        error(['The k_order_solver requires the specified approximation order to be '...
+                'consistent with the one used for computing the decision rules'])
+    end
+    y_ = dynare_simul_(iorder,M_.nstatic,M_.npred,M_.nboth,M_.nfwrd,exo_nbr, ...
                        y_(dr.order_var,1),ex_',M_.Sigma_e,options_.DynareRandomStreams.seed, ...
                        dr.ys(dr.order_var),dr);
     y_(dr.order_var,:) = y_;
-- 
GitLab