diff --git a/src/@dates/intersect.m b/src/@dates/intersect.m
index 32bf54ad4e4e7a71a3f37eb10445410784697c5f..2fd6da980f7846969b2b572f06008f5b7cd22f41 100644
--- a/src/@dates/intersect.m
+++ b/src/@dates/intersect.m
@@ -38,14 +38,7 @@ if ~isequal(o.freq, p.freq)
     return
 end
 
-% Octave 6.1.0 added support for the 'legacy' option, but it was buggy.
-% The problem should be fixed in Octave 6.2.0.
-% See: https://savannah.gnu.org/bugs/?59708
-if isoctave && octave_ver_less_than('6.2')
-    time = intersect(o.time, p.time);
-else
-    time = intersect(o.time, p.time, 'legacy');
-end
+time = intersect(o.time, p.time, 'legacy');
 
 q = dates();
 if isempty(time)
diff --git a/src/@dates/remove_.m b/src/@dates/remove_.m
index 3adeaf0e4773c7c98b5027c848a1aa80986f9af4..92cca59eaad4989d512a63bcbcab9b54eaf97e02 100644
--- a/src/@dates/remove_.m
+++ b/src/@dates/remove_.m
@@ -42,11 +42,7 @@ if ~isequal(o.freq, p.freq)
     error('dates:remove', 'Inputs must have common frequency.')
 end
 
-if isoctave && octave_ver_less_than('6')
-    time = setdiff(o.time, p.time);
-else
-    time = setdiff(o.time, p.time, 'legacy');
-end
+time = setdiff(o.time, p.time, 'legacy');
 
 o.time = time;
 
@@ -180,4 +176,4 @@ if t(1)
 end
 
 T = all(t);
-%@eof:7
\ No newline at end of file
+%@eof:7
diff --git a/src/@dates/setdiff.m b/src/@dates/setdiff.m
index f93c86bd9a592b44a15ac8690048c9e78d7d2367..17b2f7e14087d2407737604c12408d8ebc74e74f 100644
--- a/src/@dates/setdiff.m
+++ b/src/@dates/setdiff.m
@@ -48,18 +48,10 @@ if isequal(o.length(), p.length()) && isequal(o, p)
     return
 end
 
-if isoctave && octave_ver_less_than('6')
-    if nargout<2
-        time = setdiff(o.time, p.time);
-    else
-        [time, io] = setdiff(o.time, p.time);
-    end
+if nargout<2
+    time = setdiff(o.time, p.time, 'legacy');
 else
-    if nargout<2
-        time = setdiff(o.time, p.time, 'legacy');
-    else
-        [time, io] = setdiff(o.time, p.time, 'legacy');
-    end
+    [time, io] = setdiff(o.time, p.time, 'legacy');
 end
 
 q = dates(o.freq);
@@ -182,4 +174,4 @@ if t(1)
     t(2) = isequal(c1, d3);
 end
 T = all(t);
-%@eof:6
\ No newline at end of file
+%@eof:6
diff --git a/src/@dates/unique_.m b/src/@dates/unique_.m
index 889992ca9534fe01cecd42d903ac1c23cdbc0c4f..048b35f514d55826e4b4e55dc94edfb0f0426326 100644
--- a/src/@dates/unique_.m
+++ b/src/@dates/unique_.m
@@ -30,11 +30,7 @@ if o.ndat()<=1
     return
 end
 
-if isoctave && octave_ver_less_than('6')
-    [~, id] = unique(o.time);
-else
-    [~, id] = unique(o.time(:,1), 'legacy');
-end
+[~, id] = unique(o.time(:,1), 'legacy');
 
 o.time = o.time(sort(id));
 
diff --git a/src/initialize_dseries_class.m b/src/initialize_dseries_class.m
index c445ae189ea81803c3dd96443a2f81537bd926db..869399485d5081790f6ba33ff1bb19e2430f9af3 100644
--- a/src/initialize_dseries_class.m
+++ b/src/initialize_dseries_class.m
@@ -1,6 +1,6 @@
 function initialize_dseries_class()
 
-% Copyright © 2015-2020 Dynare Team
+% Copyright © 2015-2021 Dynare Team
 %
 % This code is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
@@ -111,4 +111,12 @@ if isempty(select_x13_binary(true))
     rmpath([dseries_src_root 'utilities/x13']);
 end
 
+% The following version requirement should not be stricter than the one in
+% Dynare (matlab/dynare.m and mex/build/octave/configure.ac)
+if isoctave && octave_ver_less_than('6.2.0')
+    skipline()
+    warning(['This version of dseries has only been tested on Octave 6.2.0 and above. It may fail to run or give unexpected result. Consider upgrading your version of Octave.'])
+    skipline()
+end
+
 assignin('caller', 'dseries_src_root', dseries_src_root);
diff --git a/src/utilities/convert/convert_mdbnomics.m b/src/utilities/convert/convert_mdbnomics.m
index 2d489ea066218b6b57cc4a0e4d1e2b29de1cbcc4..813b5f3dc7de33219a1e8bfa0bc904f064c148cc 100644
--- a/src/utilities/convert/convert_mdbnomics.m
+++ b/src/utilities/convert/convert_mdbnomics.m
@@ -6,7 +6,7 @@ function ds = convert_mdbnomics(o)
 % OUTPUTS
 % - ds        [dseries]
 
-% Copyright (C) 2020 Dynare Team
+% Copyright (C) 2020-2021 Dynare Team
 %
 % This code is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
@@ -29,21 +29,13 @@ end
 ds = dseries();
 
 % Check for multiple datasets
-if isoctave && octave_ver_less_than('6')
-    dataset_codes = unique(o.data(:,o.col_idx.dataset_code));
-else
-    dataset_codes = unique(o.data(:,o.col_idx.dataset_code),'stable');    
-end
+dataset_codes = unique(o.data(:,o.col_idx.dataset_code),'stable');
 
 % Convert mdbnomics to dseries
 for ii = 1:length(dataset_codes)
     % Slice data for dataset
     ds_dataset = o.data(strcmp(o.data(:,o.col_idx.dataset_code),dataset_codes{ii}),:);
-    if isoctave && octave_ver_less_than('6')
-        series_codes = unique(ds_dataset(:,o.col_idx.series_code));
-    else
-        series_codes = unique(ds_dataset(:,o.col_idx.series_code),'stable');
-    end
+    series_codes = unique(ds_dataset(:,o.col_idx.series_code),'stable');
     % Get list of variable names
     list_of_names = cellfun(@(x)regexprep(x, '[^a-zA-Z0-9]', '_'), series_codes, 'UniformOutput', false);
     % Get dataset values
@@ -90,11 +82,7 @@ end
 
 % Add tags to the variables
 if length(dataset_codes) > 1
-    if isoctave && octave_ver_less_than('6')
-        series_codes = unique(o.data(:,o.col_idx.series_code));
-    else
-        series_codes = unique(o.data(:,o.col_idx.series_code),'stable');
-    end
+    series_codes = unique(o.data(:,o.col_idx.series_code),'stable');
     list_of_names = cellfun(@(x)regexprep(x, '[^a-zA-Z0-9]', '_'), series_codes, 'UniformOutput', false);
     series_length = cell2mat(cellfun(@(x)length(find(strcmp(x, o.data(:,o.col_idx.series_code)))), series_codes, 'UniformOutput', false));
 end