From a39c26060eb48b85dd036cc63231707391fbdf34 Mon Sep 17 00:00:00 2001
From: Marco Ratto <marco.ratto@jrc.ec.europa.eu>
Date: Wed, 10 Jun 2015 15:57:30 +0200
Subject: [PATCH] Fix bug for models with leads and legs in exo variables

---
 matlab/getH.m                    | 6 +++---
 matlab/identification_analysis.m | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/matlab/getH.m b/matlab/getH.m
index afdb8e1698..fdf84c4e9e 100644
--- a/matlab/getH.m
+++ b/matlab/getH.m
@@ -130,7 +130,7 @@ else
 dyssdtheta=zeros(length(oo_.dr.ys),M_.param_nbr);
 d2yssdtheta=zeros(length(oo_.dr.ys),M_.param_nbr,M_.param_nbr);
 [residual, gg1] = feval([M_.fname,'_static'],oo_.dr.ys, oo_.exo_steady_state', M_.params);
-df = feval([M_.fname,'_params_derivs'],yy0, oo_.exo_steady_state', ...
+df = feval([M_.fname,'_params_derivs'],yy0, repmat(oo_.exo_steady_state',[M_.maximum_exo_lag+M_.maximum_exo_lead+1]), ...
     M_.params, oo_.dr.ys, 1, dyssdtheta, d2yssdtheta);
 dyssdtheta = -gg1\df;
 if nargout>5,
@@ -192,9 +192,9 @@ if nargout>5,
 %     g22 = get_all_2nd_derivs(gpp,m,nelem,M_.param_nbr);
 %     g22 = g22(:,:,indx,indx);
 else
-    [df, gp] = feval([M_.fname,'_params_derivs'],yy0, oo_.exo_steady_state', ...
+    [df, gp] = feval([M_.fname,'_params_derivs'],yy0, repmat(oo_.exo_steady_state',[M_.maximum_exo_lag+M_.maximum_exo_lead+1,1]), ...
         M_.params, oo_.dr.ys, 1, dyssdtheta,d2yssdtheta);
-    [residual, g1, g2 ] = feval([M_.fname,'_dynamic'],yy0, oo_.exo_steady_state', ...
+    [residual, g1, g2 ] = feval([M_.fname,'_dynamic'],yy0, repmat(oo_.exo_steady_state',[M_.maximum_exo_lag+M_.maximum_exo_lead+1,1]), ...
         M_.params, oo_.dr.ys, 1);
     [nr, nc]=size(g2);
 end
diff --git a/matlab/identification_analysis.m b/matlab/identification_analysis.m
index 6e5e9521c0..7eac2d1999 100644
--- a/matlab/identification_analysis.m
+++ b/matlab/identification_analysis.m
@@ -75,7 +75,7 @@ if info(1)==0,
     tau=[oo_.dr.ys(oo_.dr.order_var); vec(A); dyn_vech(B*M_.Sigma_e*B')];
     yy0=oo_.dr.ys(I);
     [residual, g1 ] = feval([M_.fname,'_dynamic'],yy0, ...
-        oo_.exo_steady_state', M_.params, ...
+        repmat(oo_.exo_steady_state',[M_.maximum_exo_lag+M_.maximum_exo_lead+1]), M_.params, ...
         oo_.dr.ys, 1);
     vg1 = [oo_.dr.ys(oo_.dr.order_var); vec(g1)];
 
@@ -118,7 +118,7 @@ if info(1)==0,
     ide_strength_J_prior=NaN(1,nparam);
     if init, %~isempty(indok),
         normaliz = abs(params);
-        if prior_exist,           
+        if prior_exist,
             if ~isempty(estim_params_.var_exo),
                 normaliz1 = estim_params_.var_exo(:,7)'; % normalize with prior standard deviation
             else
-- 
GitLab