diff --git a/matlab/backward/backward_model_inversion.m b/matlab/backward/backward_model_inversion.m
index fe4ae51528d503df4b8004ae4434513b8ee7bf66..99198771f5c349351af09eb19b0ab0ed330e2951 100644
--- a/matlab/backward/backward_model_inversion.m
+++ b/matlab/backward/backward_model_inversion.m
@@ -87,17 +87,15 @@ model_dtransf = str2func('dynamic_backward_model_for_inversion');
 
 % Initialization of the returned simulations (endogenous variables).
 Y = NaN(DynareModel.endo_nbr, nobs(constraints));
-
 Y = [transpose(initialconditions{DynareModel.endo_names{:}}(constraints.dates(1)-1).data), Y];
 for i=1:nyctrl
     Y(controlledendogenousvariables_id(i),2:end) = transpose(constraints.data(:,i));
 end
 
 % Exogenous variables.
-X = exogenousvariables.data; %{exo_names{:}}(constraints.dates(1)-max(1,DynareModel.orig_maximum_exo_lag):constraints.dates(end)).data;
+X = exogenousvariables.data;
 
 % Inversion of the model, solvers for the free endogenous and exogenous variables (call a Newton-like algorithm in each period).
-
 ity = 2;
 itx = find(exogenousvariables.dates==constraints.dates(1));
 DynareOptions.solve_algo=4;
diff --git a/matlab/backward/simul_backward_linear_model.m b/matlab/backward/simul_backward_linear_model.m
index da055a2bbcc6fdfab4719225c3d404cfc5627cd0..381642998212bf667f3739bf51b679aef7172e6b 100644
--- a/matlab/backward/simul_backward_linear_model.m
+++ b/matlab/backward/simul_backward_linear_model.m
@@ -1,4 +1,4 @@
-function simulations = simul_backward_linear_model(varargin)
+function simulations = simul_backward_linear_model(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations)
 
 % Simulates a stochastic linear backward looking model.
 %
@@ -38,16 +38,20 @@ function simulations = simul_backward_linear_model(varargin)
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-if M_.maximum_lead
+if DynareModel.maximum_lead
     error('Model defined in %s.mod is not backward.', M_.fname)
 end
 
-if M_.maximum_lag
+if ~DynareModel.maximum_lag
     error('Model defined in %s.mod is not backward.', M_.fname)
 end
 
+if nargin<6
+    innovations = [];
+end
+
 [initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, nx, ny1, iy1, jdx, model_dynamic] = ...
-    simul_backward_model_init(varargin{:});
+    simul_backward_model_init(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations);
 
 [ysim, xsim] = simul_backward_linear_model_(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations, nx, ny1, iy1, jdx, model_dynamic);
 
diff --git a/matlab/backward/simul_backward_model_init.m b/matlab/backward/simul_backward_model_init.m
index c519cebe56d086ea55139bbf71300b2c0dfc12d0..ab1e30c6ebe62f1012ae4c2ea85cbb22be1ad026 100644
--- a/matlab/backward/simul_backward_model_init.m
+++ b/matlab/backward/simul_backward_model_init.m
@@ -1,4 +1,5 @@
-function [initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, nx, ny1, iy1, jdx, model_dynamic, y] = simul_backward_model_init(varargin)
+function [initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, nx, ny1, iy1, jdx, model_dynamic, y] = ...
+    simul_backward_model_init(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations)
 
 % Initialization of the routines simulating backward models.    
 
@@ -19,12 +20,6 @@ function [initialconditions, samplesize, innovations, DynareOptions, DynareModel
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-initialconditions = varargin{1};
-samplesize = varargin{2};
-DynareOptions = varargin{3};
-DynareModel = varargin{4};
-DynareOutput = varargin{5};
-
 % Test if the model is backward.
 if DynareModel.maximum_lead
     error('simul_backward_nonlinear_model:: The specified model is not backward looking!')
@@ -150,7 +145,7 @@ if missinginitialcondition
     error('Please fix the dseries object used for setting the initial conditions!')
 end
 
-if nargin<6 || isempty(varargin{6}) 
+if nargin<6 || isempty(innovations)
     % Set the covariance matrix of the structural innovations.
     variances = diag(DynareModel.Sigma_e);
     number_of_shocks = length(DynareModel.Sigma_e);
@@ -174,7 +169,6 @@ if nargin<6 || isempty(varargin{6})
     DynareOutput.exo_simul(:,positive_var_indx) = DynareOutput.bnlms.shocks;
     innovations = DynareOutput.exo_simul;
 else
-    innovations = varargin{6};
     DynareOutput.exo_simul = innovations; % innovations
 end
 
diff --git a/matlab/backward/simul_backward_nonlinear_model.m b/matlab/backward/simul_backward_nonlinear_model.m
index 048d85e4df70a7ffdbd43bd0a168519e214dbcd3..956af53aff61d4782be06edd7b1229c810cb142f 100644
--- a/matlab/backward/simul_backward_nonlinear_model.m
+++ b/matlab/backward/simul_backward_nonlinear_model.m
@@ -1,4 +1,4 @@
-function simulations = simul_backward_nonlinear_model(varargin)
+function simulations = simul_backward_nonlinear_model(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations)
 
 % Simulates a stochastic non linear backward looking model with arbitrary precision (a deterministic solver is used).
 %
@@ -38,16 +38,20 @@ function simulations = simul_backward_nonlinear_model(varargin)
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-if M_.maximum_lead
-    error('Model defined in %s.mod is not backward.', M_.fname)
+if DynareModel.maximum_lead
+    error('Model defined in %s.mod is not backward.', DynareModel.fname)
 end
 
-if M_.maximum_lag
-    error('Model defined in %s.mod is not backward.', M_.fname)
+if ~DynareModel.maximum_lag
+    error('Model defined in %s.mod is not backward.', DynareModel.fname)
+end
+
+if nargin<6
+    innovations = [];
 end
 
 [initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, ~, ~, iy1, ~, model_dynamic] = ...
-    simul_backward_model_init(varargin{:});
+    simul_backward_model_init(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations);
 
 [ysim, xsim] = simul_backward_nonlinear_model_(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations, iy1, model_dynamic);