diff --git a/src/@dates/max.m b/src/@dates/max.m
index 10bdec6c3a881f8ff5e46c7c6faa0340d80afc4a..af0466f505ab949a7cfa9cd6a4160740d2be8c70 100644
--- a/src/@dates/max.m
+++ b/src/@dates/max.m
@@ -6,9 +6,9 @@ function q = max(varargin)  % --*-- Unitary tests --*--
 % - varargin [dates]
 %
 % OUTPUTS
-% - q [dates]
+% - q        [dates]
 
-% Copyright (C) 2013-2017 Dynare Team
+% Copyright © 2013-2020 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,58 +29,83 @@ end
 
 switch nargin
   case 1
-    sorted_time_member = sortrows(varargin{1}.time);
+    if varargin{1}.freq==365
+        sorted_time_member = sort(varargin{1}.time(:,1));
+    else
+        sorted_time_member = sortrows(varargin{1}.time);
+    end
     q = dates();
     q.freq = varargin{1}.freq;
-    q.time = sorted_time_member(varargin{1}.ndat(),:);
+    if varargin{1}.freq==365
+        q.time = [sorted_time_member(varargin{1}.ndat()), NaN];
+    else
+        q.time = sorted_time_member(varargin{1}.ndat(),:);
+    end
   otherwise
     q = max(horzcat(varargin{:}));
 end
 
+return
+
 %@test:1
-%$ % Define some dates
-%$ d3 = dates('1950q2');
-%$ d4 = dates('1950Q3');
-%$ d5 = dates('1950m1');
-%$ d6 = dates('1948M6');
-%$ m2 = max(d3,d4);
-%$ i2 = (m2==d4);
-%$ m3 = max(d5,d6);
-%$ i3 = (m3==d5);
-%$
-%$ % Check the results.
-%$ t(1) = dassert(i2,true);
-%$ t(2) = dassert(i3,true);
-%$ T = all(t);
+% Define some dates
+d3 = dates('1950q2');
+d4 = dates('1950Q3');
+d5 = dates('1950m1');
+d6 = dates('1948M6');
+m2 = max(d3,d4);
+i2 = (m2==d4);
+m3 = max(d5,d6);
+i3 = (m3==d5);
+
+% Check the results.
+t(1) = dassert(i2,true);
+t(2) = dassert(i3,true);
+T = all(t);
 %@eof:1
 
 %@test:2
-%$ % Define some dates
-%$ d = dates('1950Q2','1951Q3','1949Q1','1950Q4');
-%$ m = max(d);
-%$ i = (m==dates('1951Q3'));
-%$
-%$ % Check the results.
-%$ t(1) = dassert(i,true);
-%$ T = all(t);
+% Define some dates
+d = dates('1950Q2','1951Q3','1949Q1','1950Q4');
+m = max(d);
+i = (m==dates('1951Q3'));
+
+% Check the results.
+t(1) = dassert(i,true);
+T = all(t);
 %@eof:2
 
 %@test:3
-%$ % Define some dates
-%$ m = max(dates('1950Q2','1951Q3'),dates('1949Q1'),dates('1950Q4'));
-%$ i = (m==dates('1951Q3'));
-%$
-%$ % Check the results.
-%$ t(1) = dassert(i,true);
-%$ T = all(t);
+% Define some dates
+m = max(dates('1950Q2','1951Q3'),dates('1949Q1'),dates('1950Q4'));
+i = (m==dates('1951Q3'));
+
+% Check the results.
+t(1) = dassert(i,true);
+T = all(t);
 %@eof:3
 
 %@test:4
-%$ % Define some dates
-%$ m = max(dates('1950Q2'),dates('1951Q3'),dates('1949Q1'),dates('1950Q4'));
-%$ i = (m==dates('1951Q3'));
-%$
-%$ % Check the results.
-%$ t(1) = dassert(i,true);
-%$ T = all(t);
+% Define some dates
+m = max(dates('1950Q2'),dates('1951Q3'),dates('1949Q1'),dates('1950Q4'));
+i = (m==dates('1951Q3'));
+
+% Check the results.
+t(1) = dassert(i,true);
+T = all(t);
 %@eof:4
+
+%@test:5
+try
+    M = max(dates('2009-04-12', '1966-11-02'), dates('1938-11-22'), dates('1972-01-25', '1976-03-13'));
+    t(1) = true;
+catch
+    t(1) = false;
+end
+
+if t(1)
+    t(2) = M==dates('2009-04-12');
+end
+
+T = all(t);
+%@eof:5
diff --git a/src/@dates/min.m b/src/@dates/min.m
index 0535179c6c035ccda497e1639b849e41c2a63427..43152af9f44c237e0df522508f56edb3c5ed6317 100644
--- a/src/@dates/min.m
+++ b/src/@dates/min.m
@@ -6,9 +6,9 @@ function q = min(varargin) % --*-- Unitary tests --*--
 % - varargin [dates]
 %
 % OUTPUTS
-% - q [dates]
+% - q        [dates]
 
-% Copyright (C) 2013-2017 Dynare Team
+% Copyright © 2013-2020 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,58 +29,83 @@ end
 
 switch nargin
   case 1
-    sorted_time_member = sortrows(varargin{1}.time);
+    if varargin{1}.freq==365
+        sorted_time_member = sort(varargin{1}.time(:,1));
+    else
+        sorted_time_member = sortrows(varargin{1}.time);
+    end
     q = dates();
     q.freq = varargin{1}.freq;
-    q.time = sorted_time_member(1,:);
+    if varargin{1}.freq==365
+        q.time = [sorted_time_member(1,:), NaN];
+    else
+        q.time = sorted_time_member(1,:);
+    end
   otherwise
     q = min(horzcat(varargin{:}));
 end
 
+return
+
 %@test:1
-%$ % Define some dates
-%$ d3 = dates('1950q2');
-%$ d4 = dates('1950Q3');
-%$ d5 = dates('1950m1');
-%$ d6 = dates('1948M6');
-%$ m2 = min(d3,d4);
-%$ i2 = (m2==d3);
-%$ m3 = min(d5,d6);
-%$ i3 = (m3==d6);
-%$
-%$ % Check the results.
-%$ t(1) = dassert(i2,true);
-%$ t(2) = dassert(i3,true);
-%$ T = all(t);
+% Define some dates
+d3 = dates('1950q2');
+d4 = dates('1950Q3');
+d5 = dates('1950m1');
+d6 = dates('1948M6');
+m2 = min(d3,d4);
+i2 = (m2==d3);
+m3 = min(d5,d6);
+i3 = (m3==d6);
+
+% Check the results.
+t(1) = dassert(i2,true);
+t(2) = dassert(i3,true);
+T = all(t);
 %@eof:1
 
 %@test:2
-%$ % Define some dates
-%$ d = dates('1950Q2','1951Q3','1949Q1','1950Q4');
-%$ m = min(d);
-%$ i = (m==dates('1949Q1'));
-%$
-%$ % Check the results.
-%$ t(1) = dassert(i,true);
-%$ T = all(t);
+% Define some dates
+d = dates('1950Q2','1951Q3','1949Q1','1950Q4');
+m = min(d);
+i = (m==dates('1949Q1'));
+
+% Check the results.
+t(1) = dassert(i,true);
+T = all(t);
 %@eof:2
 
 %@test:3
-%$ % Define some dates
-%$ m = min(dates('1950Q2','1951Q3'),dates('1949Q1'),dates('1950Q4'));
-%$ i = (m==dates('1949Q1'));
-%$
-%$ % Check the results.
-%$ t(1) = dassert(i,true);
-%$ T = all(t);
+% Define some dates
+m = min(dates('1950Q2','1951Q3'),dates('1949Q1'),dates('1950Q4'));
+i = (m==dates('1949Q1'));
+
+% Check the results.
+t(1) = dassert(i,true);
+T = all(t);
 %@eof:3
 
 %@test:4
-%$ % Define some dates
-%$ m = min(dates('1950Q2'),dates('1951Q3'),dates('1949Q1'),dates('1950Q4'));
-%$ i = (m==dates('1949Q1'));
-%$
-%$ % Check the results.
-%$ t(1) = dassert(i,true);
-%$ T = all(t);
+% Define some dates
+m = min(dates('1950Q2'),dates('1951Q3'),dates('1949Q1'),dates('1950Q4'));
+i = (m==dates('1949Q1'));
+
+% Check the results.
+t(1) = dassert(i,true);
+T = all(t);
 %@eof:4
+
+%@test:5
+try
+    m = min(dates('2009-04-12', '1966-11-02'), dates('1938-11-22'), dates('1972-01-25', '1976-03-13'));
+    t(1) = true;
+catch
+    t(1) = false;
+end
+
+if t(1)
+    t(2) = m==dates('1938-11-22');
+end
+
+T = all(t);
+%@eof:5