diff --git a/matlab/dr1.m b/matlab/dr1.m
index 909b78229c87b93ef4c09c777c7a16591a6a304a..8ef437339f4ec06f8f720304bce0424dd615f34e 100644
--- a/matlab/dr1.m
+++ b/matlab/dr1.m
@@ -513,7 +513,7 @@ dr.ghuu = A\rhs;
 
 dr.ghxx = dr.ghxx(1:M_.endo_nbr,:);
 dr.ghxu = dr.ghxu(1:M_.endo_nbr,:);
-dr.ghuu = dr.ghuu(1:M_.endo_nbr,:);
+rdr.ghuu = dr.ghuu(1:M_.endo_nbr,:);
 
 
 % dr.ghs2
@@ -536,8 +536,8 @@ E1 = [eye(npred); zeros(kp-npred,npred)];
 H = E1;
 hxx = dr.ghxx(nstatic+[1:npred],:);
 [junk,k2a,k2] = find(M_.lead_lag_incidence(M_.maximum_endo_lag+2,order_var));
-[junk,k3a,k3] = find(M_.lead_lag_incidence(M_.maximum_endo_lag+2,:));
-[B1, err] = sparse_hessian_times_B_kronecker_C(hessian(:,kh(k3,k3)),gu(k3a,:),options_.threads.kronecker.sparse_hessian_times_B_kronecker_C);
+k3 = nnz(M_.lead_lag_incidence(1:M_.maximum_endo_lag+1,:))+(1:dr.nsfwrd)';
+[B1, err] = sparse_hessian_times_B_kronecker_C(hessian(:,kh(k3,k3)),gu(k2a,:),options_.threads.kronecker.sparse_hessian_times_B_kronecker_C);
 mexErrCheck('sparse_hessian_times_B_kronecker_C', err);
 RHS = RHS + jacobia_(:,k2)*guu(k2a,:)+B1;