diff --git a/matlab/check_list_of_variables.m b/matlab/check_list_of_variables.m
new file mode 100644
index 0000000000000000000000000000000000000000..a2ca4e98d0cec65ef1b2a01af848082038707cd2
--- /dev/null
+++ b/matlab/check_list_of_variables.m
@@ -0,0 +1,141 @@
+function varlist = check_list_of_variables(options_, M_, varlist)
+% This function defines, if necessary, the list of endogenous variables
+% for which the posterior statistics have to be computed. 
+% 
+%
+% INPUTS 
+%
+%   options_        [structure]    Dynare structure.
+%   M_              [structure]    Dynare structure (related to model definition).
+%   varlist         [string]       Array of strings with name of the endogenous variables.
+%    
+% OUTPUTS 
+%   varlist         [string] 
+%        
+% SPECIAL REQUIREMENTS
+
+% Copyright (C) 2003-2008 Dynare Team
+%
+% This file is part of Dynare.
+%
+% Dynare is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% Dynare is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
+
+    if isempty(varlist)
+        disp(' ')
+        disp(['You did not declared endogenous variables after the estimation command.'])
+        info = 0;
+        cas = [];
+        if options_.bayesian_irf
+            cas = 'Posterior IRFs';
+            info=1;
+        end
+        if options_.moments_varendo
+            if isempty(cas)
+                cas = 'Posterior moments';
+            else
+                cas = [ cas , ', posterior moments'];
+            end
+            info=1;
+        end
+        if options_.smoother
+            if isempty(cas)
+                cas = 'Posterior smoothed variables';
+            else
+                cas = [ cas , ', posterior smoothed variables'];
+            end
+            info=1;
+        end
+        if options_.smoother
+            if isempty(cas)
+                cas = 'Posterior smoothed variables';
+            else
+                cas = [ cas , ', posterior smoothed variables'];
+            end
+            info=1;
+        end
+        if ~isempty(options_.filter_step_ahead)
+            if isempty(cas)
+                cas = 'Posterior k-step ahead filtered variables';
+            else
+                cas = [ cas , ', posterior k-step ahead filtered variables'];
+            end
+            info=1;
+        end
+        if options_.forecast
+            if isempty(cas)
+                cas = 'Posterior forecasts';
+            else
+                cas = [ cas , ' and posterior forecats'];
+            end
+            info=1;
+        end
+        string = [ cas , ' will be computed for the ' num2str(M_.endo_nbr)  ' endogenous variables'];
+        string = [ string ' of your model, this can be very long....']; 
+        format_text( string, 10)
+        if info
+            choice = [];
+            while isempty(choice)
+                disp(' ')
+                disp(' ')
+                disp('Choose one of the following options:')
+                disp(' ')
+                disp(' [1] Consider all the endogenous variables.')
+                disp(' [2] Consider all the observed endogenous variables.')
+                disp(' [3] Stop Dynare and change the mod file.')
+                disp(' ')
+                choice = input('options [default is 1] =  ');
+                if isempty(choice)
+                    choice=1;
+                end
+                if choice==1
+                    varlist = M_.endo_names;
+                elseif choice==2
+                    varlist = options_.varobs;
+                elseif choice==3
+                    varlist = NaN;
+                else
+                    disp('')
+                    disp('YOU HAVE TO ANSWER 1, 2 or 3!')
+                    disp('')
+                end
+            end
+        end
+        if isnan(varlist)
+            edit([M_.fname '.mod'])
+        end
+        disp('')
+    end
+    
+    
+    
+ function format_text(remain, max_number_of_words_per_line)
+    index = 0;
+    line_of_text = [];
+    while ~isempty(remain)
+        [token, remain] = strtok(remain);
+        index = index+1;
+        if isempty(line_of_text)
+            line_of_text = token;
+        else
+            line_of_text = [line_of_text , ' ' , token];
+        end
+        if index==max_number_of_words_per_line
+            disp(line_of_text)
+            index = 0;
+            line_of_text = [];
+        end
+    end
+    if index<max_number_of_words_per_line
+        disp(line_of_text)
+    end
\ No newline at end of file
diff --git a/matlab/dynare_estimation.m b/matlab/dynare_estimation.m
index 24e20e1e92616b5edd8026e2be8f574c4a51afcb..b6b638aefcb37a64d178a9de0e323b4eee8d671e 100644
--- a/matlab/dynare_estimation.m
+++ b/matlab/dynare_estimation.m
@@ -11,7 +11,7 @@ function dynare_estimation(var_list_)
 % SPECIAL REQUIREMENTS
 %   none
 
-% Copyright (C) 2003-2007 Dynare Team
+% Copyright (C) 2003-2008 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -28,10 +28,15 @@ function dynare_estimation(var_list_)
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-global M_ options_ oo_ estim_params_ 
-global bayestopt_
+global M_ options_ oo_ estim_params_ bayestopt_
+
+var_list_ = check_list_of_variables(options_, M_, var_list_)
+if isempty(var_list_)
+    return
+else
+    options_.varlist = var_list_;
+end
 
-options_.varlist = var_list_;
 options_.lgyidx2varobs = zeros(size(M_.endo_names,1),1);
 for i = 1:size(M_.endo_names,1)
   tmp = strmatch(deblank(M_.endo_names(i,:)),options_.varobs,'exact');