From fda021855cbe511674c6bdeededa170ce27a0d17 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Thu, 2 Aug 2018 14:13:03 +0200
Subject: [PATCH] Fix forecast command with deterministic exogenous and linear
 option

Closes #1608
---
 matlab/dyn_forecast.m                      |  9 +++-
 tests/Makefile.am                          |  1 +
 tests/forecast/linear_exo_det_forecast.mod | 48 ++++++++++++++++++++++
 3 files changed, 56 insertions(+), 2 deletions(-)
 create mode 100644 tests/forecast/linear_exo_det_forecast.mod

diff --git a/matlab/dyn_forecast.m b/matlab/dyn_forecast.m
index 69e78d54a5..162ace08ca 100644
--- a/matlab/dyn_forecast.m
+++ b/matlab/dyn_forecast.m
@@ -151,12 +151,17 @@ else
     elseif horizon <= exo_det_length
         ex = zeros(exo_det_length,M.exo_nbr);
     end
+    if options.linear
+        iorder = 1;
+    else
+        iorder = options.order;
+    end
     if isequal(M.H,0)
         [yf,int_width] = simultxdet(y0,ex,oo.exo_det_simul,...
-                                    options.order,var_list,M,oo,options);
+                                    iorder,var_list,M,oo,options);
     else
         [yf,int_width,int_width_ME] = simultxdet(y0,ex,oo.exo_det_simul,...
-                                                 options.order,var_list,M,oo,options);
+                                                 iorder,var_list,M,oo,options);
     end
 end
 
diff --git a/tests/Makefile.am b/tests/Makefile.am
index a9472adfef..288c9bb57f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -303,6 +303,7 @@ MODFILES = \
 	stochastic_purely_forward/stochastic_purely_forward.mod \
 	stochastic_purely_forward/stochastic_purely_forward_with_static.mod \
 	forecast/Hansen_exo_det_forecast.mod \
+	forecast/linear_exo_det_forecast.mod \
 	forecast/ls2003_rolling_window_forecast.mod \
 	gradient/fs2000_numgrad_13.mod \
 	gradient/fs2000_numgrad_15.mod \
diff --git a/tests/forecast/linear_exo_det_forecast.mod b/tests/forecast/linear_exo_det_forecast.mod
new file mode 100644
index 0000000000..cd256bb79b
--- /dev/null
+++ b/tests/forecast/linear_exo_det_forecast.mod
@@ -0,0 +1,48 @@
+// Regression test for issue #1608 (combining forecast, varexo_det and linear)
+
+var y, pi, i, g, u, k;
+varexo e_g e_u e_k;
+varexo_det gov;
+
+parameters lambda, pi_target, y_target, phi_pi, phi, rho, rhoout, rhopi, rhoint, sigma1, sigma2, sigma3;
+
+lambda     = 0.3;
+pi_target  = 0;
+y_target   = 0;
+phi_pi      = 1.5;
+phi          = 1;
+rho          = 0.99;
+T            = 50;
+rhoout     = 0.8;
+rhopi       = 0.5;
+rhoint      = 0;
+sigma1    = 1;
+sigma2    = 1;
+sigma3    = 1;
+
+model(linear);
+y=y(+1)-phi*(i-pi(+1))+gov+g;
+pi=lambda*y+rho*pi(+1)+u;
+i=phi_pi*(pi-pi_target)+k;
+g=rhoout*g(-1)+e_g;
+u=rhopi*u(-1)+e_u;
+k=rhoint*k(-1)+e_k;
+end;
+
+steady;
+check;
+
+shocks;
+var e_g;
+stderr sigma1;
+var e_u;
+stderr sigma2;
+var e_k;
+stderr sigma3;
+var gov;
+periods 1:9;
+values 0.2;
+end;
+
+stoch_simul(irf=0);
+forecast;
-- 
GitLab