diff --git a/matlab/simult_.m b/matlab/simult_.m
index 8e6346231157a7a50fd0ba5caa95a762cd1892cd..fd67254f7e52b392f376ac10147f160a04fd4a65 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_;