diff --git a/doc/dynare.texi b/doc/dynare.texi
index 91f9f00e16db643732133fec81301e2840208ead..c2bd98616b155d68708c5943d82f9aea0c33f5f5 100644
--- a/doc/dynare.texi
+++ b/doc/dynare.texi
@@ -6971,11 +6971,14 @@ The first period of data (@i{i.e.} for quarterly data, an integer in
 [@code{1,4}]). Default: @code{1}
 
 @item final_year = @var{INTEGER}
-The last year of data. Default: Set to encompass entire dataset
+The last year of data. Default: Set to encompass entire dataset.
 
 @item final_subperiod = @var{INTEGER}
 The final period of data (@i{i.e.} for monthly data, an integer in
-[@code{1,12}]. Default: Set to encompass entire dataset
+[@code{1,12}]. Default: When final_year is also missing, set to
+encompass entire dataset; when final_year is indicated, set to the
+maximum number of subperiods given the frequency (@i{i.e}. 4 for
+quarterly data, 12 for monthly,...).
 
 @item datafile = @var{FILENAME}
 @xref{datafile}.
diff --git a/matlab/ms-sbvar/check_datafile_years_assigned.m b/matlab/ms-sbvar/check_datafile_years_assigned.m
index 98daa0685728c521431d0bfb56383431c7ff401c..7df9611dc909217610987b5fbde0490856b24481 100644
--- a/matlab/ms-sbvar/check_datafile_years_assigned.m
+++ b/matlab/ms-sbvar/check_datafile_years_assigned.m
@@ -25,18 +25,20 @@ function [final_year,final_subperiod]=check_datafile_years_assigned(options_)
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-final_year = [];
-final_subperiod = [];
+final_year = options_.ms.final_year;
+final_subperiod = options_.ms.final_subperiod;
 
 if isempty(options_.ms.initial_year)
     error('Must set initial_year option');
 end
 
-if isempty(options_.ms.final_year)
+if isempty(final_year)
     n = size(options_.data,1);
     freq = options_.ms.freq;
     final_subperiod = mod(options_.ms.initial_subperiod+n-2,freq)+1;
     final_year = options_.ms.initial_year + floor((n-1)/freq);
+elseif isempty(final_subperiod)
+    final_subperiod = options_.ms.freq;
 end
 
 if isempty(options_.datafile)
diff --git a/matlab/ms-sbvar/ms_sbvar_setup.m b/matlab/ms-sbvar/ms_sbvar_setup.m
index 00263fe3337c70ca0200cf916c2d789dec0097ff..2d6375a2c920ff9af869eef35ec2057db7041c35 100644
--- a/matlab/ms-sbvar/ms_sbvar_setup.m
+++ b/matlab/ms-sbvar/ms_sbvar_setup.m
@@ -30,11 +30,7 @@ function ms_sbvar_setup(options_)
 
 options_.data = read_variables(options_.datafile, ...
     options_.varobs, [], options_.xls_sheet, options_.xls_range);
-[final_year,final_subperiod] = check_datafile_years_assigned(options_);
-if ~isempty(final_year)
-    options_.ms.final_year = final_year;
-    options_.ms.final_subperiod = final_subperiod;
-end
+[options_.ms.final_year,options_.ms.final_subperiod] = check_datafile_years_assigned(options_);
 
 if options_.ms.upper_cholesky
     if options_.ms.lower_cholesky
diff --git a/matlab/ms-sbvar/sbvar.m b/matlab/ms-sbvar/sbvar.m
index 0a6864536e6956bae57733a69cbe7ed551856828..d92d7a6781c8449afd6e91594f7a6ff9ca03937b 100644
--- a/matlab/ms-sbvar/sbvar.m
+++ b/matlab/ms-sbvar/sbvar.m
@@ -34,11 +34,7 @@ function sbvar(M, options)
 
 clean_sbvar_files();
 options.data = read_variables(options.datafile,options.varobs,[],options.xls_sheet,options.xls_range);
-[final_year,final_subperiod] = check_datafile_years_assigned(options);
-if ~isempty(final_year)
-    options.ms.final_year = final_year;
-    options.ms.final_subperiod = final_subperiod;
-end
+[options.ms.final_year,options.ms.final_subperiod] = check_datafile_years_assigned(options);
 
 if options.forecast == 0
     options.forecast = 4;