diff --git a/matlab/UnivariateSpectralDensity.m b/matlab/UnivariateSpectralDensity.m
index 818063ad91712766d05d5d9ea81553e1b374e76e..671b2582035e9e1f98a5cef9b2ed5baf2711af91 100644
--- a/matlab/UnivariateSpectralDensity.m
+++ b/matlab/UnivariateSpectralDensity.m
@@ -5,7 +5,7 @@ function [omega,f] = UnivariateSpectralDensity(dr,var_list)
 % 
 % Adapted from th_autocovariances.m.  
 
-% Copyright (C) 2006-2008 Dynare Team
+% Copyright (C) 2006-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -48,11 +48,10 @@ end
 if nargin<2
   var_list = [];
 end
+if size(var_list,1) == 0
+    var_list = M_.endo_names(1:M_.orig_endo_nbr, :);
+end
 nvar = size(var_list,1);
-if nvar == 0
-  nvar = length(dr.order_var);
-  ivar = [1:nvar]';
-else
     ivar=zeros(nvar,1);
     for i=1:nvar
       i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact');
@@ -62,7 +61,6 @@ else
 	ivar(i) = i_tmp;
       end
     end
-end
 f = zeros(nvar,GridSize);
 ghx = dr.ghx;
 ghu = dr.ghu;
diff --git a/matlab/add_auxiliary_variables_to_steadystate.m b/matlab/add_auxiliary_variables_to_steadystate.m
index bfd43964f64b77e1d9b2312c4d114b9abb15a7c3..f010d12d1150c6eec8f55a9aba4bce042d716cfb 100644
--- a/matlab/add_auxiliary_variables_to_steadystate.m
+++ b/matlab/add_auxiliary_variables_to_steadystate.m
@@ -25,7 +25,7 @@ function ys1 = add_auxiliary_variables_to_steadystate(ys,aux_vars,fname, ...
     aux_lead_nbr = 0;
     for i=1:n
         if aux_vars(i).type == 1
-            ys1(k) = ys(aux_vars(i).orig_endo_index);
+            ys1(k) = ys(aux_vars(i).orig_index);
         elseif aux_vars(i).type == 0
             aux_lead_nbr = aux_lead_nbr + 1;
         end
diff --git a/matlab/check_list_of_variables.m b/matlab/check_list_of_variables.m
index bdc9914bf729728877dd598e585de2efff5c21e2..801110ce94267a0ebef76063961e5c351485de89 100644
--- a/matlab/check_list_of_variables.m
+++ b/matlab/check_list_of_variables.m
@@ -115,7 +115,7 @@ function varlist = check_list_of_variables(options_, M_, varlist)
                     choice=1;
                 end
                 if choice==1
-                    varlist = M_.endo_names;
+                    varlist = M_.endo_names(1:M_.orig_endo_nbr, :);
                 elseif choice==2
                     varlist = options_.varobs;
                 elseif choice==3
diff --git a/matlab/datatomfile.m b/matlab/datatomfile.m
index e968896abf9982ffc01426344a489f7d859dc7e9..a320f1e2a30b59b7322c3b668220b98bfa78278f 100644
--- a/matlab/datatomfile.m
+++ b/matlab/datatomfile.m
@@ -1,5 +1,4 @@
 function datatomfile (s,var_list)
-
 % function datatomfile (s,var_list)
 % This optional command saves the simulation results in a text file. The name of each
 % variable preceeds the corresponding results. This command must follow SIMUL.
@@ -14,7 +13,7 @@ function datatomfile (s,var_list)
 % SPECIAL REQUIREMENTS
 %    none
 
-% Copyright (C) 2001-2007 Dynare Team
+% Copyright (C) 2001-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -33,16 +32,13 @@ function datatomfile (s,var_list)
 
 global M_ oo_
 
-%fid=fopen([s,'.m'],'w') ;
 sm=[s,'.m'];
 fid=fopen(sm,'w') ;
 
+if size(var_list,1) == 0
+  var_list = M_.endo_names(1:M_.orig_endo_nbr,:);
+end
 n = size(var_list,1);
-if n == 0
-  n = M_.endo_nbr;
-  ivar = [1:n]';
-  var_list = M_.endo_names;
-else
   ivar=zeros(n,1);
   for i=1:n
     i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact');
@@ -52,7 +48,7 @@ else
       ivar(i) = i_tmp;
     end
   end
-end
+
 
 
 for i = 1:n
diff --git a/matlab/disp_dr.m b/matlab/disp_dr.m
index b729cfdc84a9c33d313d62f2499a4fc0825086b5..22050118e68c26cd02191e70917593bfaf61da08 100644
--- a/matlab/disp_dr.m
+++ b/matlab/disp_dr.m
@@ -1,6 +1,13 @@
 function disp_dr(dr,order,var_list)
-
-% Copyright (C) 2001 Dynare Team
+% Display the decision rules
+%
+% INPUTS
+%    dr [struct]:            decision rules
+%    order [int]:            order of approximation
+%    var_list [char array]:  list of endogenous variables for which the
+%                            decision rules should be printed
+    
+% Copyright (C) 2001-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -26,11 +33,12 @@ function disp_dr(dr,order,var_list)
   
   k1 = dr.order_var;
   
+  if size(var_list,1) == 0
+      var_list = M_.endo_names(1:M_.orig_endo_nbr, :);
+  end
+
   nvar = size(var_list,1);
-  if nvar == 0
-    nvar = length(k1);
-    ivar = [1:nvar];
-  else
+
     ivar=zeros(nvar,1);
     for i=1:nvar
       i_tmp = strmatch(var_list(i,:),M_.endo_names(k1,:),'exact');
@@ -41,7 +49,7 @@ function disp_dr(dr,order,var_list)
 	ivar(i) = i_tmp;
       end
     end
-  end
+
   disp('POLICY AND TRANSITION FUNCTIONS')
   % variable names
   str = '                        ';
@@ -90,7 +98,7 @@ function disp_dr(dr,order,var_list)
   %
   for k=1:nx
     flag = 0;
-    str1 = sprintf('%s(%d)',M_.endo_names(k1(klag(k,1)),:),klag(k,2)-M_.maximum_lag-2);
+    str1 = subst_auxvar(k1(klag(k,1)),klag(k,2)-M_.maximum_lag-2);
     str = sprintf('%-20s',str1);
     for i=1:nvar
       x = dr.ghx(ivar(i),k);
@@ -130,8 +138,8 @@ function disp_dr(dr,order,var_list)
     for k = 1:nx
       for j = 1:k
 	flag = 0;
-	str1 = sprintf('%s(%d),%s(%d)',M_.endo_names(k1(klag(k,1)),:),klag(k,2)-M_.maximum_lag-2, ...
-		       M_.endo_names(k1(klag(j,1)),:),klag(j,2)-M_.maximum_lag-2);
+	str1 = sprintf('%s,%s',subst_auxvar(k1(klag(k,1)),klag(k,2)-M_.maximum_lag-2), ...
+		       subst_auxvar(k1(klag(j,1)),klag(j,2)-M_.maximum_lag-2));
 	str = sprintf('%-20s',str1);
 	for i=1:nvar
 	  if k == j
@@ -182,7 +190,7 @@ function disp_dr(dr,order,var_list)
     for k = 1:nx
       for j = 1:nu
 	flag = 0;
-	str1 = sprintf('%s(%d),%s',M_.endo_names(k1(klag(k,1)),:),klag(k,2)-M_.maximum_lag-2, ...
+	str1 = sprintf('%s,%s',subst_auxvar(k1(klag(k,1)),klag(k,2)-M_.maximum_lag-2), ...
 		       M_.exo_names(j,:));
 	str = sprintf('%-20s',str1);
 	for i=1:nvar
@@ -200,17 +208,32 @@ function disp_dr(dr,order,var_list)
       end
     end
   end
+end
 
-% $$$   dr.ghx
-% $$$   dr.ghu
-% $$$   dr.ghxx
-% $$$   dr.ghuu
-% $$$   dr.ghxu
-
-% 01/08/2001 MJ  added test for order in printing quadratic terms
-% 02/21/2001 MJ pass all variable names through deblank()
-% 02/21/2001 MJ changed from f to g format to write numbers
-% 10/09/2002 MJ corrected error on constant whith subset of variables 
-
-
-
+% Given the index of an endogenous (possibly an auxiliary var), and a
+% lead/lag, creates a string of the form "x(lag)".
+% In the case of auxiliary vars for lags, replace by the original variable
+% name, and compute the lead/lag accordingly.
+function str = subst_auxvar(aux_index, aux_lead_lag)
+    global M_
+    
+    if aux_index <= M_.orig_endo_nbr
+        str = sprintf('%s(%d)', deblank(M_.endo_names(aux_index,:)), aux_lead_lag);
+        return
+    end
+    for i = 1:length(M_.aux_vars)
+        if M_.aux_vars(i).endo_index == aux_index
+            switch M_.aux_vars(i).type
+              case 1
+                orig_name = deblank(M_.endo_names(M_.aux_vars(i).orig_index, :));
+              case 3
+                orig_name = deblank(M_.exo_names(M_.aux_vars(i).orig_index, :));
+              otherwise
+                error(sprintf('Invalid auxiliary type: %s', M_.endo_names(aux_index, :)))
+            end
+            str = sprintf('%s(%d)', orig_name, M_.aux_vars(i).orig_lead_lag+aux_lead_lag);
+            return
+        end
+    end
+    error(sprintf('Could not find aux var: %s', M_.endo_names(aux_index, :)))
+end
diff --git a/matlab/disp_dr_sparse.m b/matlab/disp_dr_sparse.m
index bf5ce3f0f2f20c3d56252ec30c8f705328a62e18..859f0e178101ac46594bb311c1f15c5da68f9842 100644
--- a/matlab/disp_dr_sparse.m
+++ b/matlab/disp_dr_sparse.m
@@ -1,6 +1,14 @@
 function disp_dr_sparse(dr,order,var_list)
+% Display the decision rules in sparse mode
+% This file is a modified version of disp_dr.m: the common parts should be factorized!
+%
+% INPUTS
+%    dr [struct]:            decision rules
+%    order [int]:            order of approximation
+%    var_list [char array]:  list of endogenous variables for which the
+%                            decision rules should be printed
 
-% Copyright (C) 2001 Dynare Team
+% Copyright (C) 2001-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -44,11 +52,13 @@ function disp_dr_sparse(dr,order,var_list)
       klag = [klag ; M_.block_structure.block(i).dr.kstate(k_tmp,[1 2])];
       k1 = [k1 ; M_.block_structure.block(i).variable(M_.block_structure.block(i).dr.order_var)'];
   end
+
+  if size(var_list,1) == 0
+      var_list = M_.endo_names(1:M_.orig_endo_nbr, :);
+  end
+
   nvar = size(var_list,1);
-  if nvar == 0
-    nvar = length(k1);
-    ivar = [1:nvar];
-  else
+
     ivar=zeros(nvar,1);
     for i=1:nvar
       i_tmp = strmatch(var_list(i,:),M_.endo_names(k1,:),'exact');
@@ -59,7 +69,7 @@ function disp_dr_sparse(dr,order,var_list)
 	ivar(i) = i_tmp;
       end
     end
-  end
+
   disp('POLICY AND TRANSITION FUNCTIONS')
   % variable names
   str = '                        ';
@@ -108,7 +118,7 @@ function disp_dr_sparse(dr,order,var_list)
   %
   for k=1:nx
     flag = 0;
-    str1 = sprintf('%s(%d)',M_.endo_names(k1(klag(k,1)),:),klag(k,2)-M_.maximum_lag-2);
+    str1 = subst_auxvar(k1(klag(k,1)),klag(k,2)-M_.maximum_lag-2);
     str = sprintf('%-20s',str1);
     for i=1:nvar
       x = ghx(ivar(i),k);
@@ -148,8 +158,8 @@ function disp_dr_sparse(dr,order,var_list)
     for k = 1:nx
       for j = 1:k
 	flag = 0;
-	str1 = sprintf('%s(%d),%s(%d)',M_.endo_names(k1(klag(k,1)),:),klag(k,2)-M_.maximum_lag-2, ...
-		       M_.endo_names(k1(klag(j,1)),:),klag(j,2)-M_.maximum_lag-2);
+	str1 = sprintf('%s,%s',subst_auxvar(k1(klag(k,1)),klag(k,2)-M_.maximum_lag-2), ...
+		       subst_auxvar(k1(klag(j,1)),klag(j,2)-M_.maximum_lag-2));
 	str = sprintf('%-20s',str1);
 	for i=1:nvar
 	  if k == j
@@ -200,7 +210,7 @@ function disp_dr_sparse(dr,order,var_list)
     for k = 1:nx
       for j = 1:nu
 	flag = 0;
-	str1 = sprintf('%s(%d),%s',M_.endo_names(k1(klag(k,1)),:),klag(k,2)-M_.maximum_lag-2, ...
+	str1 = sprintf('%s,%s',subst_auxvar(k1(klag(k,1)),klag(k,2)-M_.maximum_lag-2), ...
 		       M_.exo_names(j,:));
 	str = sprintf('%-20s',str1);
 	for i=1:nvar
@@ -218,17 +228,32 @@ function disp_dr_sparse(dr,order,var_list)
       end
     end
   end
+end
 
-% $$$   dr.ghx
-% $$$   dr.ghu
-% $$$   dr.ghxx
-% $$$   dr.ghuu
-% $$$   dr.ghxu
-
-% 01/08/2001 MJ  added test for order in printing quadratic terms
-% 02/21/2001 MJ pass all variable names through deblank()
-% 02/21/2001 MJ changed from f to g format to write numbers
-% 10/09/2002 MJ corrected error on constant whith subset of variables 
-
-
-
+% Given the index of an endogenous (possibly an auxiliary var), and a
+% lead/lag, creates a string of the form "x(lag)".
+% In the case of auxiliary vars for lags, replace by the original variable
+% name, and compute the lead/lag accordingly.
+function str = subst_auxvar(aux_index, aux_lead_lag)
+    global M_
+    
+    if aux_index <= M_.orig_endo_nbr
+        str = sprintf('%s(%d)', deblank(M_.endo_names(aux_index,:)), aux_lead_lag);
+        return
+    end
+    for i = 1:length(M_.aux_vars)
+        if M_.aux_vars(i).endo_index == aux_index
+            switch M_.aux_vars(i).type
+              case 1
+                orig_name = deblank(M_.endo_names(M_.aux_vars(i).orig_index, :));
+              case 3
+                orig_name = deblank(M_.exo_names(M_.aux_vars(i).orig_index, :));
+              otherwise
+                error(sprintf('Invalid auxiliary type: %s', M_.endo_names(aux_index, :)))
+            end
+            str = sprintf('%s(%d)', orig_name, M_.aux_vars(i).orig_lead_lag+aux_lead_lag);
+            return
+        end
+    end
+    error(sprintf('Could not find aux var: %s', M_.endo_names(aux_index, :)))
+end
diff --git a/matlab/disp_moments.m b/matlab/disp_moments.m
index 0a9744486ec6cd89c47210d629391217484cc1e4..a4dbf1f5d46891c284a3058ce11cf8dd94b9df04 100644
--- a/matlab/disp_moments.m
+++ b/matlab/disp_moments.m
@@ -1,6 +1,7 @@
 function disp_moments(y,var_list)
+% Displays moments of simulated variables
 
-% Copyright (C) 2001-2008 Dynare Team
+% Copyright (C) 2001-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -21,11 +22,12 @@ function disp_moments(y,var_list)
   
   warning_old_state = warning;
   warning off
-  nvar = size(var_list,1);
-  if nvar == 0
-    nvar = M_.endo_nbr;
-    ivar = [1:nvar]';
-  else
+
+  if size(var_list,1) == 0
+      var_list = M_.endo_names(1:M_.orig_endo_nbr, :);
+  end
+      
+    nvar = size(var_list,1);
     ivar=zeros(nvar,1);
     for i=1:nvar
       i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact');
@@ -35,7 +37,7 @@ function disp_moments(y,var_list)
 	ivar(i) = i_tmp;
       end
     end
-  end
+
   y = y(ivar,options_.drop+M_.maximum_lag+1:end)';
   
   m = mean(y);
@@ -90,10 +92,3 @@ function disp_moments(y,var_list)
   end
   
   warning(warning_old_state);
-% 10/03/02 MJ corrected order std. dev var in printed report.
-% 01/02/03 MJ added correlation and autocorrelation
-% 01/19/03 MJ corrected variable name truncation
-% 02/18/03 MJ added subtitle for HP filter
-% 03/02/03 MJ added M_.maximum_lag to the number of entries of y
-% 04/28/03 MJ modified handling of options_
-% 06/23/03 MJ added warning off
diff --git a/matlab/disp_th_moments.m b/matlab/disp_th_moments.m
index 0b7c18d321275b8a59fd1fe4485a2dc7e9c435fb..1775360df6a24cc0a3332b344209c4d65064e322 100644
--- a/matlab/disp_th_moments.m
+++ b/matlab/disp_th_moments.m
@@ -1,6 +1,7 @@
 function disp_th_moments(dr,var_list)
-
-% Copyright (C) 2001-2008 Dynare Team
+% Display theoretical moments of variables
+    
+% Copyright (C) 2001-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -19,11 +20,10 @@ function disp_th_moments(dr,var_list)
 
   global M_ oo_ options_
   
+  if size(var_list,1) == 0
+      var_list = M_.endo_names(1:M_.orig_endo_nbr, :);
+  end
   nvar = size(var_list,1);
-  if nvar == 0
-    nvar = length(dr.order_var);
-    ivar = [1:nvar]';
-  else
     ivar=zeros(nvar,1);
     for i=1:nvar
       i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact');
@@ -33,7 +33,6 @@ function disp_th_moments(dr,var_list)
 	ivar(i) = i_tmp;
       end
     end
-  end
   
   [oo_.gamma_y,stationary_vars] = th_autocovariances(dr,ivar,M_,options_);
   m = dr.ys(ivar);
@@ -114,13 +113,3 @@ function disp_th_moments(dr,var_list)
     lh = size(labels,2)+2;
     dyntable(title,headers,labels,z,lh,8,4);
   end
-  
-% 10/09/02 MJ 
-% 10/18/02 MJ added th_autocovariances() and provided for lags on several
-% periods
-% 10/30/02 MJ added correlations and autocorrelations, uses table()
-%             oo_.gamma_y is now a cell array.
-% 02/18/03 MJ added subtitles for HP filter
-% 05/01/03 MJ corrected options_.hp_filter
-% 05/21/03 MJ variance decomposition: test M_.exo_nbr > 1
-% 05/21/03 MJ displays only variables with positive variance
diff --git a/matlab/dr1.m b/matlab/dr1.m
index 2c864a1a3c7ad80af027c33c6a9095af0f909898..2b9cd168c326dac4078e325a14e6033d26e7c4c7 100644
--- a/matlab/dr1.m
+++ b/matlab/dr1.m
@@ -67,6 +67,8 @@ function [dr,info,M_,options_,oo_] = dr1(dr,task,M_,options_,oo_)
         if isfield(M_,'orig_model')
             orig_model = M_.orig_model;
             M_.endo_nbr = orig_model.endo_nbr;
+            M_.orig_endo_nbr = orig_model.orig_endo_nbr;
+            M_.aux_vars = orig_model.aux_vars;
             M_.endo_names = orig_model.endo_names;
             M_.lead_lag_incidence = orig_model.lead_lag_incidence;
             M_.maximum_lead = orig_model.maximum_lead;
diff --git a/matlab/dr1_sparse.m b/matlab/dr1_sparse.m
index 984aa58ac290286bd1405bdfda9989840ed0c828..b6df040377671ce77673be0ee376ccfcb82b9aa2 100644
--- a/matlab/dr1_sparse.m
+++ b/matlab/dr1_sparse.m
@@ -71,6 +71,8 @@ function [dr,info,M_,options_,oo_] = dr1_sparse(dr,task,M_,options_,oo_)
         if isfield(M_,'orig_model')
             orig_model = M_.orig_model;
             M_.endo_nbr = orig_model.endo_nbr;
+            M_.orig_endo_nbr = orig_model.orig_endo_nbr;
+            M_.aux_vars = orig_model.aux_vars;
             M_.endo_names = orig_model.endo_names;
             M_.lead_lag_incidence = orig_model.lead_lag_incidence;
             M_.maximum_lead = orig_model.maximum_lead;
diff --git a/matlab/dyn_ramsey_dynamic_.m b/matlab/dyn_ramsey_dynamic_.m
index fda44da2e3a0c9b10ca5b1fec177f54319e6bbfc..7503f6fcd50b815c3de867e89080ae8de4976ba9 100644
--- a/matlab/dyn_ramsey_dynamic_.m
+++ b/matlab/dyn_ramsey_dynamic_.m
@@ -1,5 +1,4 @@
 function [J,M_] = dyn_ramsey_dynamic_(ys,lbar,M_,options_,oo_,it_)
-
 % function J = dyn_ramsey_dynamic_(ys,lbar)
 % dyn_ramsey_dynamic_ sets up the Jacobian of the expanded model for optimal
 % policies. It modifies several fields of M_
@@ -14,7 +13,7 @@ function [J,M_] = dyn_ramsey_dynamic_(ys,lbar,M_,options_,oo_,it_)
 % SPECIAL REQUIREMENTS
 %     none
 
-% Copyright (C) 2003-2008 Dynare Team
+% Copyright (C) 2003-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -54,6 +53,8 @@ function [J,M_] = dyn_ramsey_dynamic_(ys,lbar,M_,options_,oo_,it_)
   
   % storing original values
   orig_model.endo_nbr = endo_nbr;
+  orig_model.orig_endo_nbr = M_.orig_endo_nbr;
+  orig_model.aux_vars = M_.aux_vars;
   orig_model.endo_names = endo_names;
   orig_model.lead_lag_incidence = i_leadlag;
   orig_model.maximum_lead = max_lead;
@@ -225,6 +226,10 @@ function [J,M_] = dyn_ramsey_dynamic_(ys,lbar,M_,options_,oo_,it_)
   % setting expanded model parameters
   % storing original values
   M_.endo_nbr = endo_nbr1;
+  % Consider that there is no auxiliary variable, because otherwise it
+  % interacts badly with the auxiliary variables from the preprocessor.
+  M_.orig_endo_nbr = endo_nbr1;
+  M_.aux_vars = [];
   M_.endo_names = endo_names1;
   M_.lead_lag_incidence = i_leadlag1;
   M_.maximum_lead = max_lead1;
diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m
index 9031408764f49314e74f4f90a14b973b8325efce..6d6399458ac337dcf77b4224e73319fe8c1c7dc8 100644
--- a/matlab/dynare_estimation_1.m
+++ b/matlab/dynare_estimation_1.m
@@ -287,7 +287,7 @@ if options_.steadystate_flag% if the *_steadystate.m file is provided.
                        [zeros(M_.exo_nbr,1);...
                         oo_.exo_det_steady_state]);
     if size(ys,1) < M_.endo_nbr 
-        if isfield(M_,'aux_vars')
+        if length(M_.aux_vars) > 0
             ys = add_auxiliary_variables_to_steadystate(ys,M_.aux_vars,...
                                                         M_.fname,...
                                                         zeros(M_.exo_nbr,1),...
diff --git a/matlab/dynasave.m b/matlab/dynasave.m
index 725d7bd131ec4b8047de724755d905ffd6280a2d..bcb35bf69b484a282d7085b82b72a547c269ca3b 100644
--- a/matlab/dynasave.m
+++ b/matlab/dynasave.m
@@ -1,6 +1,4 @@
-
 function dynasave(s,var_list)
-
 % function dynasave(s,var_list)
 % This optional command saves the simulation results in a .MAT file.
 %
@@ -14,7 +12,7 @@ function dynasave(s,var_list)
 % SPECIAL REQUIREMENTS
 %    none
 
-% Copyright (C) 2001-2008 Dynare Team
+% Copyright (C) 2001-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -33,12 +31,11 @@ function dynasave(s,var_list)
 
   global M_ oo_
 
+  if size(var_list,1) == 0
+    var_list = M_.endo_names(1:M_.orig_endo_nbr, :);
+  end
+
   n = size(var_list,1);
-  if n == 0
-    n = M_.endo_nbr;
-    ivar = [1:n]';
-    var_list = M_.endo_names;
-  else
     ivar=zeros(n,1);
     for i=1:n
       i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact');
@@ -48,8 +45,6 @@ function dynasave(s,var_list)
 	ivar(i) = i_tmp;
       end
     end
-  end
-
 
 %  dyn2vec(var_list(1),var_list(1));
 eval([var_list(1) '=oo_.endo_simul(ivar(1),:)'';'])
diff --git a/matlab/dynatype.m b/matlab/dynatype.m
index 661a5a0ba2e30749b56b8930459d8778d344d997..9ce527b9d96f1bd167315468694f477353ba374f 100644
--- a/matlab/dynatype.m
+++ b/matlab/dynatype.m
@@ -13,7 +13,7 @@ function dynatype (s,var_list)
 % SPECIAL REQUIREMENTS
 %   none
 
-% Copyright (C) 2001-2008 Dynare Team
+% Copyright (C) 2001-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -34,12 +34,11 @@ global M_ oo_
 
 fid=fopen(s,'w') ;
 
+if size(var_list,1) == 0
+  var_list = M_.endo_names(1:M_.orig_endo_nbr,:);
+end
+
 n = size(var_list,1);
-if n == 0
-  n = M_.endo_nbr;
-  ivar = [1:n]';
-  var_list = M_.endo_names;
-else
   ivar=zeros(n,1);
   for i=1:n
     i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact');
@@ -49,8 +48,6 @@ else
       ivar(i) = i_tmp;
     end
   end
-end
-
 
 for i = 1:n
 	fprintf(fid,M_.endo_names(ivar(i),:),'\n') ;
diff --git a/matlab/evaluate_likelihood.m b/matlab/evaluate_likelihood.m
index b80456fb0adf13be96785676c34f2921417c16a8..8d3efed076713096c0e389519eebc58da97f6d22 100644
--- a/matlab/evaluate_likelihood.m
+++ b/matlab/evaluate_likelihood.m
@@ -110,7 +110,7 @@ function [llik,parameters] = evaluate_likelihood(parameters)
                                [zeros(M_.exo_nbr,1);...
                                 oo_.exo_det_steady_state]);
             if size(ys,1) < M_.endo_nbr 
-                if isfield(M_,'aux_vars')
+                if length(M_.aux_vars) > 0
                     ys = add_auxiliary_variables_to_steadystate(ys,M_.aux_vars,...
                                                                 M_.fname,...
                                                                 zeros(M_.exo_nbr,1),...
diff --git a/matlab/forcst.m b/matlab/forcst.m
index 35eed8a8bbf31dee6e40ee14c8357fa35e0c66b8..29726d62f2fcd6feb7cac76ec06cc8565079b215 100644
--- a/matlab/forcst.m
+++ b/matlab/forcst.m
@@ -1,5 +1,4 @@
 function [yf,int_width]=forcst(dr,y0,horizon,var_list)
-
 % function [yf,int_width]=forecst(dr,y0,horizon,var_list)
 %   computes mean forecast for a given value of the parameters
 %   computes also confidence band for the forecast    
@@ -18,7 +17,7 @@ function [yf,int_width]=forcst(dr,y0,horizon,var_list)
 % SPECIAL REQUIREMENTS
 %    none
 
-% Copyright (C) 2003-2008 Dynare Team
+% Copyright (C) 2003-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -46,11 +45,10 @@ function [yf,int_width]=forcst(dr,y0,horizon,var_list)
     inv_order_var = dr.inv_order_var;
     [A,B] = kalman_transition_matrix(dr,nstatic+(1:npred),1:nc,dr.transition_auxiliary_variables,M_.exo_nbr);
     
+    if size(var_list,1) == 0
+        var_list = M_.endo_names(1:M_.orig_endo_nbr,:);
+    end
     nvar = size(var_list,1);
-    if nvar == 0
-	nvar = M_.endo_nbr;
-	ivar = [1:nvar];
-    else
 	ivar=zeros(nvar,1);
 	for i=1:nvar
 	    i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact');
@@ -61,7 +59,6 @@ function [yf,int_width]=forcst(dr,y0,horizon,var_list)
 		ivar(i) = i_tmp;
 	    end
 	end
-    end
 
     ghx1 = dr.ghx(inv_order_var(ivar),:);
     ghu1 = dr.ghu(inv_order_var(ivar),:);
diff --git a/matlab/forcst_unc.m b/matlab/forcst_unc.m
index ffaf1295d158f604b88e4a6ced341958319ec1e9..a3d28806897808e384df0b330053849fb9f7ef18 100644
--- a/matlab/forcst_unc.m
+++ b/matlab/forcst_unc.m
@@ -15,7 +15,7 @@ function forcst_unc(y0,var_list)
 % SPECIAL REQUIREMENTS
 %   None.
 
-% Copyright (C) 2006-2008 Dynare Team
+% Copyright (C) 2006-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -43,11 +43,10 @@ function forcst_unc(y0,var_list)
   
   % workspace initialization
   if isempty(var_list)
-    var_list = M_.endo_names;
-    n = M_.endo_nbr;
-  else
-    n = size(var_list,1);
+    var_list = M_.endo_names(1:M_.orig_endo_nbr,:);
   end
+    n = size(var_list,1);
+
   periods = options_.forecast;
   exo_nbr = M_.exo_nbr;
   replic = options_.replic;
diff --git a/matlab/forecast.m b/matlab/forecast.m
index f5a34064e87e8dcb66675ed3d13cdbf9b38df790..109866142fb4534ed8c2d966c597580cd13a8dc0 100644
--- a/matlab/forecast.m
+++ b/matlab/forecast.m
@@ -1,5 +1,4 @@
 function info = forecast(var_list,task)
-
 % function forecast(var_list,task)
 %   computes mean forecast for a given value of the parameters
 %   computes also confidence band for the forecast    
@@ -45,9 +44,8 @@ function info = forecast(var_list,task)
 
     endo_names = M_.endo_names;
     if isempty(var_list)
-        var_list = endo_names;
-        i_var = 1:M_.endo_nbr;
-    else
+        var_list = endo_names(1:M_.orig_endo_nbr, :);
+    end
         i_var = [];
         for i = 1:size(var_list)
             tmp = strmatch(var_list(i,:),endo_names,'exact');
@@ -56,7 +54,7 @@ function info = forecast(var_list,task)
             end
             i_var = [i_var; tmp];
         end
-    end
+
     n_var = length(i_var);
     
     trend = 0;
diff --git a/matlab/forecast_graphs.m b/matlab/forecast_graphs.m
index a739282187af975feb98c81949057f68cfb4c6ee..aba7f08ad3a5d0efdf2da6afda82fecfe48d5b6d 100644
--- a/matlab/forecast_graphs.m
+++ b/matlab/forecast_graphs.m
@@ -32,9 +32,8 @@ function forecast_graphs(var_list)
     hpdinf = oo_.forecast.HPDinf;
     hpdsup = oo_.forecast.HPDsup;
     if isempty(var_list)
-	varlist = endo_names;
-	i_var = 1:M_.endo_nbr;
-    else
+	varlist = endo_names(1:M_.orig_endo_nbr,:);
+    end
 	i_var = [];
 	for i = 1:size(var_list)
 	    tmp = strmatch(var_list(i,:),endo_names,'exact');
@@ -43,7 +42,6 @@ function forecast_graphs(var_list)
 	    end
 	    i_var = [i_var; tmp];
 	end
-    end
     nvar = length(i_var);
     
 % $$$     % build trend for smoothed variables if necessary
diff --git a/matlab/initial_estimation_checks.m b/matlab/initial_estimation_checks.m
index 88db173cc8745898d4465fa79560dda0ab9207f6..83f1a85955c8cca631f55e79342e794d2d16efda 100644
--- a/matlab/initial_estimation_checks.m
+++ b/matlab/initial_estimation_checks.m
@@ -1,6 +1,5 @@
 function initial_estimation_checks(xparam1,gend,data,data_index,number_of_observations,no_more_missing_observations)
-
-% function initial_estimation_checks(xparam1,gend,data)
+% function initial_estimation_checks(xparam1,gend,data,data_index,number_of_observations,no_more_missing_observations)
 % Checks data (complex values, ML evaluation, initial values, BK conditions,..)
 % 
 % INPUTS
@@ -14,7 +13,7 @@ function initial_estimation_checks(xparam1,gend,data,data_index,number_of_observ
 % SPECIAL REQUIREMENTS
 %    none
 
-% Copyright (C) 2003-2008 Dynare Team
+% Copyright (C) 2003-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -69,7 +68,7 @@ function initial_estimation_checks(xparam1,gend,data,data_index,number_of_observ
 				     [oo_.exo_steady_state; ...
 		    oo_.exo_det_steady_state]);
     if size(ys,1) < M_.endo_nbr 
-        if isfield(M_,'aux_vars')
+        if length(M_.aux_vars) > 0
             ys = add_auxiliary_variables_to_steadystate(ys,M_.aux_vars,...
                                                         M_.fname,...
                                                         oo_.exo_steady_state,...
diff --git a/matlab/model_diagnostics.m b/matlab/model_diagnostics.m
index acdb9e5631e2bf9dcf8d2eff0e8b83b625b25825..76908e1c92a909c3195fe9aaddd0fc9627203a6c 100644
--- a/matlab/model_diagnostics.m
+++ b/matlab/model_diagnostics.m
@@ -79,7 +79,7 @@ function model_diagnostics(M_,options_,oo_)
         [ys,check1] = feval([M_.fname '_steadystate'],dr.ys,...
                                [oo_.exo_steady_state; oo_.exo_det_steady_state]);
         if size(ys,1) < M_.endo_nbr 
-            if isfield(M_,'aux_vars')
+            if length(M_.aux_vars) > 0
                 ys = add_auxiliary_variables_to_steadystate(ys,M_.aux_vars,...
                                                             M_.fname,...
                                                             oo_.exo_steady_state,...
diff --git a/matlab/osr1.m b/matlab/osr1.m
index 030559725e4c9c9746b71ca20262e5c57b94f3c5..17dda24a3ba9fbd90733b4db5b8fb34b4b8ccefa 100644
--- a/matlab/osr1.m
+++ b/matlab/osr1.m
@@ -1,6 +1,6 @@
 function osr1(i_params,i_var,weights)
 
-% Copyright (C) 2005-2008 Dynare Team
+% Copyright (C) 2005-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -47,7 +47,7 @@ function osr1(i_params,i_var,weights)
       [ys,check1] = feval([M_.fname '_steadystate'],oo_.steady_state,...
                              [oo_.exo_steady_state; oo_.exo_det_steady_state]);
       if size(ys,1) < M_.endo_nbr 
-          if isfield(M_,'aux_vars')
+          if length(M_.aux_vars) > 0
               ys = add_auxiliary_variables_to_steadystate(ys,M_.aux_vars,...
                                                           M_.fname,...
                                                           oo_.exo_steady_state,...
diff --git a/matlab/prior_posterior_statistics.m b/matlab/prior_posterior_statistics.m
index c599651ea295b3ddef9373891a89ee78ee1c28a0..71367a7ae6f5612d3987035b1cf37139e9e224df 100644
--- a/matlab/prior_posterior_statistics.m
+++ b/matlab/prior_posterior_statistics.m
@@ -1,5 +1,4 @@
 function prior_posterior_statistics(type,Y,gend,data_index,missing_value)
-
 % function PosteriorFilterSmootherAndForecast(Y,gend, type)
 % Computes posterior filter smoother and forecasts
 %
@@ -18,7 +17,7 @@ function prior_posterior_statistics(type,Y,gend,data_index,missing_value)
 % SPECIAL REQUIREMENTS
 %    none
 
-% Copyright (C) 2005-2008 Dynare Team
+% Copyright (C) 2005-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -96,10 +95,8 @@ MAX_momentsno = min(B,ceil(MaxNumberOfBytes/(get_moments_size(options_)*8)));
 %%
 varlist = options_.varlist;
 if isempty(varlist)
-  varlist = M_.endo_names;
-  SelecVariables = transpose(1:M_.endo_nbr);
-  nvar = M_.endo_nbr;
-else
+  varlist = M_.endo_names(1:M_.orig_endo_nbr, :);
+end
   nvar = size(varlist,1);
   SelecVariables = [];
   for i=1:nvar
@@ -107,7 +104,6 @@ else
       SelecVariables = [SelecVariables;strmatch(varlist(i,:),M_.endo_names,'exact')];
     end
   end
-end
 
 irun = ones(7,1);
 ifil = zeros(7,1);
diff --git a/matlab/resid.m b/matlab/resid.m
index f88ce8e524590efcde4d6247ee92b76d289564be..9c3c592b2e450d2a6cac5b37aa83d4d96ddca56d 100644
--- a/matlab/resid.m
+++ b/matlab/resid.m
@@ -40,7 +40,7 @@ function z = resid(junk)
                        [oo_.exo_steady_state; ...
                         oo_.exo_det_steady_state]);
     if size(ys, 1) < M_.endo_nbr 
-        if isfield(M_, 'aux_vars')
+        if length(M_.aux_vars) > 0
             ys = add_auxiliary_variables_to_steadystate(ys,M_.aux_vars, ...
                                                         M_.fname, ...
                                                         oo_.exo_steady_state, ...
diff --git a/matlab/resol.m b/matlab/resol.m
index 65c979644927d1a78b8b03fbcb395adb8183eb5a..2bf6a57a967567ffea02ec4cbf53bed4110e2d10 100644
--- a/matlab/resol.m
+++ b/matlab/resol.m
@@ -72,7 +72,7 @@ if options_.steadystate_flag
 			 [oo_.exo_steady_state; ...
                       oo_.exo_det_steady_state]);
   if size(dr.ys,1) < M_.endo_nbr 
-      if isfield(M_,'aux_vars')
+      if length(M_.aux_vars) > 0
           dr.ys = add_auxiliary_variables_to_steadystate(dr.ys,M_.aux_vars,...
                                                          M_.fname,...
                                                          oo_.exo_steady_state,...
diff --git a/matlab/steady.m b/matlab/steady.m
index ed475145b4f1b6d1c400ec244cacc4ddbfbce24c..785e229289b446da4e287dc7b131dcd353b3334d 100644
--- a/matlab/steady.m
+++ b/matlab/steady.m
@@ -11,7 +11,7 @@ function steady()
 % SPECIAL REQUIREMENTS
 %   none
 
-% Copyright (C) 2001-2008 Dynare Team
+% Copyright (C) 2001-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -56,7 +56,7 @@ function steady()
   disp(' ')
   endo_names = M_.endo_names;
   steady_state = oo_.steady_state;
-  for i=1:size(oo_.steady_state,1)
+  for i=1:M_.orig_endo_nbr
     disp(sprintf('%s \t\t %g',endo_names(i,:),steady_state(i)));
   end
   
diff --git a/matlab/steady_.m b/matlab/steady_.m
index a0f710df06fcb3e40864d751c202c1f49231e56c..bdd54409802c1fb70496100057624d179b1b1a5f 100644
--- a/matlab/steady_.m
+++ b/matlab/steady_.m
@@ -42,7 +42,7 @@ function steady_()
                                        [oo_.exo_steady_state; ...
                                         oo_.exo_det_steady_state]);
     if size(ys,1) < M_.endo_nbr 
-        if isfield(M_,'aux_vars')
+        if length(M_.aux_vars) > 0
             ys = add_auxiliary_variables_to_steadystate(ys,M_.aux_vars,...
                                                         M_.fname,...
                                                         oo_.exo_steady_state,...
diff --git a/matlab/stoch_simul.m b/matlab/stoch_simul.m
index 88211281f1c1a5ac1e458d6b078ad70427606525..25c08e142e68ee99d6affdfb9811f60aba8924ce 100644
--- a/matlab/stoch_simul.m
+++ b/matlab/stoch_simul.m
@@ -1,6 +1,6 @@
 function info=stoch_simul(var_list)
 
-% Copyright (C) 2001-2008 Dynare Team
+% Copyright (C) 2001-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -87,15 +87,14 @@ function info=stoch_simul(var_list)
 
 
   if options_.irf 
-    n = size(var_list,1);
-    if n == 0
-      n = M_.endo_nbr;
-      ivar = [1:n]';
-      var_list = M_.endo_names;
+    if size(var_list,1) == 0
+      var_list = M_.endo_names(1:M_.orig_endo_nbr, :);
       if TeX
-	var_listTeX = M_.endo_names_tex;
+	var_listTeX = M_.endo_names_tex(1:M_.orig_endo_nbr, :);
       end
-    else
+    end
+
+    n = size(var_list,1);
       ivar=zeros(n,1);
       if TeX
 	var_listTeX = [];
@@ -111,7 +110,7 @@ function info=stoch_simul(var_list)
 	  end
 	end
       end
-    end
+
     if TeX
       fidTeX = fopen([M_.fname '_IRF.TeX'],'w');
       fprintf(fidTeX,'%% TeX eps-loader file generated by stoch_simul.m (Dynare).\n');
diff --git a/matlab/stoch_simul_sparse.m b/matlab/stoch_simul_sparse.m
index 9057468113700f924b2bf5e503476f5edec5efc2..04741fbd926876a62c41d850a1a4602427f5dd40 100644
--- a/matlab/stoch_simul_sparse.m
+++ b/matlab/stoch_simul_sparse.m
@@ -1,6 +1,7 @@
 function info=stoch_simul_sparse(var_list)
-
-% Copyright (C) 2001-2008 Dynare Team
+% This file is a modified version of stoch_simul.m: common parts should be factorized!
+    
+% Copyright (C) 2001-2009 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -94,15 +95,14 @@ function info=stoch_simul_sparse(var_list)
 
 
   if options_.irf 
-    n = size(var_list,1);
-    if n == 0
-      n = M_.endo_nbr;
-      ivar = [1:n]';
-      var_list = M_.endo_names;
+    if size(var_list,1) == 0
+      var_list = M_.endo_names(1:M_.orig_endo_nbr, :);
       if TeX
-	var_listTeX = M_.endo_names_tex;
+	var_listTeX = M_.endo_names_tex(1:M_.orig_endo_nbr, :);
       end
-    else
+    end
+
+    n = size(var_list,1);
       ivar=zeros(n,1);
       if TeX
 	var_listTeX = [];
@@ -118,7 +118,7 @@ function info=stoch_simul_sparse(var_list)
 	  end
 	end
       end
-    end
+
     if TeX
       fidTeX = fopen([M_.fname '_IRF.TeX'],'w');
       fprintf(fidTeX,'%% TeX eps-loader file generated by stoch_simul.m (Dynare).\n');
diff --git a/matlab/varlist_indices.m b/matlab/varlist_indices.m
index 88ee31318fed1dd75f64aec4a19e152f02a75189..7ce0f21f1b5f671333614beb3b008e0ed4f7a540 100644
--- a/matlab/varlist_indices.m
+++ b/matlab/varlist_indices.m
@@ -34,9 +34,8 @@ function [i_var,nvar] = varlist_indices(varlist)
     endo_nbr = M_.endo_nbr;
     
     if isempty(varlist)
-        i_var = (1:endo_nbr)';
-        nvar = endo_nbr;
-    else
+        varlist = M_.endo_names(1:M_.orig_endo_nbr,:);
+    end
         i_var = [];
         for i=1:size(varlist,1)
             tmp = strmatch(varlist(i,:),M_.endo_names,'exact');
@@ -46,5 +45,3 @@ function [i_var,nvar] = varlist_indices(varlist)
             i_var = [i_var; tmp];
         end
         nvar = length(i_var);
-    end
-    
\ No newline at end of file
diff --git a/preprocessor/SymbolTable.cc b/preprocessor/SymbolTable.cc
index 8dd000d620b738a40b69499fe0e88a21b837e871..38d3c46bd7f92cfe8c6eeaf0d88868377b1acae5 100644
--- a/preprocessor/SymbolTable.cc
+++ b/preprocessor/SymbolTable.cc
@@ -203,23 +203,27 @@ SymbolTable::writeOutput(ostream &output) const throw (NotYetFrozenException)
   output << "M_.Sigma_e = zeros(" << exo_nbr() << ", " << exo_nbr() << ");" << endl;
 
   // Write the auxiliary variable table
-  for(int i = 0; i < (int) aux_vars.size(); i++)
-    {
-      output << "M_.aux_vars(" << i+1 << ").endo_index = " << getTypeSpecificID(aux_vars[i].symb_id)+1 << ";" << endl
-             << "M_.aux_vars(" << i+1 << ").type = " << aux_vars[i].type << ";" << endl;
-      switch(aux_vars[i].type)
-        {
-        case avEndoLead:
-        case avExoLead:
-        case avExpectation:
-          break;
-        case avEndoLag:
-        case avExoLag:
-          output << "M_.aux_vars(" << i+1 << ").orig_endo_index = " << getTypeSpecificID(aux_vars[i].orig_symb_id)+1 << ";" << endl
-                 << "M_.aux_vars(" << i+1 << ").orig_lag = " << aux_vars[i].orig_lag << ";" << endl;
-          break;
-        }
-    }
+  output << "M_.orig_endo_nbr = " << endo_nbr() - aux_vars.size() << ";" << endl;
+  if (aux_vars.size() == 0)
+    output << "M_.aux_vars = [];" << endl;
+  else
+    for(int i = 0; i < (int) aux_vars.size(); i++)
+      {
+        output << "M_.aux_vars(" << i+1 << ").endo_index = " << getTypeSpecificID(aux_vars[i].symb_id)+1 << ";" << endl
+               << "M_.aux_vars(" << i+1 << ").type = " << aux_vars[i].type << ";" << endl;
+        switch(aux_vars[i].type)
+          {
+          case avEndoLead:
+          case avExoLead:
+          case avExpectation:
+            break;
+          case avEndoLag:
+          case avExoLag:
+            output << "M_.aux_vars(" << i+1 << ").orig_index = " << getTypeSpecificID(aux_vars[i].orig_symb_id)+1 << ";" << endl
+                   << "M_.aux_vars(" << i+1 << ").orig_lead_lag = " << aux_vars[i].orig_lead_lag << ";" << endl;
+            break;
+          }
+      }
 
   if (predeterminedNbr() > 0)
     {
@@ -260,14 +264,14 @@ SymbolTable::addLeadAuxiliaryVarInternal(bool endo, int index) throw (FrozenExce
 }
 
 int
-SymbolTable::addLagAuxiliaryVarInternal(bool endo, int orig_symb_id, int orig_lag) throw (FrozenException)
+SymbolTable::addLagAuxiliaryVarInternal(bool endo, int orig_symb_id, int orig_lead_lag) throw (FrozenException)
 {
   ostringstream varname;
   if (endo)
     varname << "AUX_ENDO_LAG_";
   else
     varname << "AUX_EXO_LAG_";
-  varname << orig_symb_id << "_" << -orig_lag;
+  varname << orig_symb_id << "_" << -orig_lead_lag;
 
   int symb_id;
   try
@@ -284,7 +288,7 @@ SymbolTable::addLagAuxiliaryVarInternal(bool endo, int orig_symb_id, int orig_la
   avi.symb_id = symb_id;
   avi.type = (endo ? avEndoLag : avExoLag);
   avi.orig_symb_id = orig_symb_id;
-  avi.orig_lag = orig_lag;
+  avi.orig_lead_lag = orig_lead_lag;
   aux_vars.push_back(avi);
 
   return symb_id;
@@ -297,9 +301,9 @@ SymbolTable::addEndoLeadAuxiliaryVar(int index) throw (FrozenException)
 }
 
 int
-SymbolTable::addEndoLagAuxiliaryVar(int orig_symb_id, int orig_lag) throw (FrozenException)
+SymbolTable::addEndoLagAuxiliaryVar(int orig_symb_id, int orig_lead_lag) throw (FrozenException)
 {
-  return addLagAuxiliaryVarInternal(true, orig_symb_id, orig_lag);
+  return addLagAuxiliaryVarInternal(true, orig_symb_id, orig_lead_lag);
 }
 
 int
@@ -309,9 +313,9 @@ SymbolTable::addExoLeadAuxiliaryVar(int index) throw (FrozenException)
 }
 
 int
-SymbolTable::addExoLagAuxiliaryVar(int orig_symb_id, int orig_lag) throw (FrozenException)
+SymbolTable::addExoLagAuxiliaryVar(int orig_symb_id, int orig_lead_lag) throw (FrozenException)
 {
-  return addLagAuxiliaryVarInternal(false, orig_symb_id, orig_lag);
+  return addLagAuxiliaryVarInternal(false, orig_symb_id, orig_lead_lag);
 }
 
 int
diff --git a/preprocessor/SymbolTable.hh b/preprocessor/SymbolTable.hh
index 4eded1bc1bfd261301345d0086e6d99edb876cb7..b9395e4c1cf96314ec597ff5a8be4127b1231d7e 100644
--- a/preprocessor/SymbolTable.hh
+++ b/preprocessor/SymbolTable.hh
@@ -46,7 +46,7 @@ struct AuxVarInfo
   int symb_id; //!< Symbol ID of the auxiliary variable
   aux_var_t type; //!< Its type
   int orig_symb_id; //!< Symbol ID of the endo of the original model represented by this aux var. Not used for avEndoLead
-  int orig_lag; //!< Lead/lag of the endo of the original model represented by this aux var. Not used for avEndoLead
+  int orig_lead_lag; //!< Lead/lag of the endo of the original model represented by this aux var. Not used for avEndoLead
 };
 
 //! Stores the symbol table
@@ -143,7 +143,7 @@ public:
 
 private:
   //! Factorized code for adding aux lag variables
-  int addLagAuxiliaryVarInternal(bool endo, int orig_symb_id, int orig_lag) throw (FrozenException);
+  int addLagAuxiliaryVarInternal(bool endo, int orig_symb_id, int orig_lead_lag) throw (FrozenException);
   //! Factorized code for adding aux lead variables
   int addLeadAuxiliaryVarInternal(bool endo, int index) throw (FrozenException);
 
@@ -162,9 +162,9 @@ public:
   //! Adds an auxiliary variable for endogenous with lag >= 2
   /*!
     \param[in] orig_symb_id symbol ID of the endogenous declared by the user that this new variable will represent
-    \param[in] orig_lag lag value such that this new variable will be equivalent to orig_symb_id(orig_lag)
+    \param[in] orig_lead_lag lag value such that this new variable will be equivalent to orig_symb_id(orig_lead_lag)
     \return the symbol ID of the new symbol */
-  int addEndoLagAuxiliaryVar(int orig_symb_id, int orig_lag) throw (FrozenException);
+  int addEndoLagAuxiliaryVar(int orig_symb_id, int orig_lead_lag) throw (FrozenException);
   //! Adds an auxiliary variable for endogenous with lead >= 1
   /*!
     \param[in] index Used to construct the variable name
@@ -173,9 +173,9 @@ public:
   //! Adds an auxiliary variable for exogenous with lag >= 1
   /*!
     \param[in] orig_symb_id symbol ID of the exogenous declared by the user that this new variable will represent
-    \param[in] orig_lag lag value such that this new variable will be equivalent to orig_symb_id(orig_lag)
+    \param[in] orig_lead_lag lag value such that this new variable will be equivalent to orig_symb_id(orig_lead_lag)
     \return the symbol ID of the new symbol */
-  int addExoLagAuxiliaryVar(int orig_symb_id, int orig_lag) throw (FrozenException);
+  int addExoLagAuxiliaryVar(int orig_symb_id, int orig_lead_lag) throw (FrozenException);
   //! Adds an auxiliary variable for the expectation operator
   /*!
     \param[in] information_set information set (possibly negative) of the expectation operator