diff --git a/matlab/dynare_identification.m b/matlab/dynare_identification.m
index ea0047abfe7dfb613306f559defde1191932dbc4..e48b7c1c67b7efbce0346ae55efe34cadc5626b0 100644
--- a/matlab/dynare_identification.m
+++ b/matlab/dynare_identification.m
@@ -178,7 +178,9 @@ if iload <=0,
             oo0=oo_;
             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,1);    
+            [residual, g1 ] = feval([M_.fname,'_dynamic'],yy0, ...
+                                    oo_.exo_steady_state', M_.params, ...
+                                    oo_.dr.ys, 1);    
 
             if burnin_iteration<BurninSampleSize,
                 burnin_iteration = burnin_iteration + 1;
diff --git a/matlab/getH.m b/matlab/getH.m
index 05b163a0192f32e1018d1a208cc7a4672ab35561..58d514c77a6d439f040eac7e463510b5aedf150a 100644
--- a/matlab/getH.m
+++ b/matlab/getH.m
@@ -30,10 +30,13 @@ yy0=oo_.dr.ys(I);
 % for j=1:size(M_.lead_lag_incidence,1);
 %     yy0 = [ yy0; oo_.dr.ys(find(M_.lead_lag_incidence(j,:)))];
 % end
-[df, gp] = feval([M_.fname,'_params_derivs'],yy0, oo_.exo_steady_state', M_.params, 1);
-[residual, g1 ] = feval([M_.fname,'_dynamic'],yy0, oo_.exo_steady_state', M_.params,1);
+[df, gp] = feval([M_.fname,'_params_derivs'],yy0, oo_.exo_steady_state', ...
+                 M_.params, oo_.dr.ys, 1);
+[residual, g1 ] = feval([M_.fname,'_dynamic'],yy0, oo_.exo_steady_state', ...
+                        M_.params, oo_.dr.ys, 1);
 
-[residual, g1, g2 ] = feval([M_.fname,'_dynamic'],yy0, oo_.exo_steady_state', M_.params,1);
+[residual, g1, g2 ] = feval([M_.fname,'_dynamic'],yy0, oo_.exo_steady_state', ...
+                            M_.params, oo_.dr.ys, 1);
 [residual, gg1] = feval([M_.fname,'_static'],oo_.dr.ys, oo_.exo_steady_state', M_.params);
 % df = feval([M_.fname,'_model_derivs'],yy0, oo_.exo_steady_state', M_.params, 1);
 dyssdtheta = -gg1\df;
diff --git a/preprocessor/DynamicModel.cc b/preprocessor/DynamicModel.cc
index ef3773d789d2260e53f316095323c2e3b16faf01..47cec105d01812d35cc352d9ff19e413961963ef 100644
--- a/preprocessor/DynamicModel.cc
+++ b/preprocessor/DynamicModel.cc
@@ -3333,14 +3333,11 @@ DynamicModel::writeParamsDerivativesFile(const string &basename) const
       cerr << "ERROR: Can't open file " << filename << " for writing" << endl;
       exit(EXIT_FAILURE);
     }
-  paramsDerivsFile << "function [rp, gp, rpp, gpp, hp] = " << basename << "_params_derivs(y, x, params, it_, ss_param_deriv, ss_param_2nd_deriv)" << endl
+  paramsDerivsFile << "function [rp, gp, rpp, gpp, hp] = " << basename << "_params_derivs(y, x, params, steady_state, it_, ss_param_deriv, ss_param_2nd_deriv)" << endl
                    << "%" << endl
                    << "% Warning : this file is generated automatically by Dynare" << endl
                    << "%           from model file (.mod)" << endl << endl;
 
-  if (isUnaryOpUsed(oSteadyState))
-    paramsDerivsFile << "global oo_;" << endl << endl;
-
   writeModelLocalVariables(paramsDerivsFile, oMatlabDynamicModel);
 
   writeTemporaryTerms(params_derivs_temporary_terms, paramsDerivsFile, oMatlabDynamicModel);