diff --git a/src/@dates/dates.m b/src/@dates/dates.m
index a813b43ad90cf75b5879fba821c23f4be46dcc04..eb6e401ede6d95976846e76ca6ed623fed6b43e4 100644
--- a/src/@dates/dates.m
+++ b/src/@dates/dates.m
@@ -113,7 +113,7 @@ methods
             return
         end
         if isequal(nargin,4) && isfreq(varargin{1}) && isequal(varargin{1},365)
-            o.time = NaN(0,3);
+            o.time = NaN(0,2);
             if ischar(varargin{1})
                 o.freq = string2freq(varargin{1});
             else
@@ -123,7 +123,10 @@ methods
                 if isnumeric(varargin{3}) && isvector(varargin{3}) && all(isint(varargin{3}))
                     if isnumeric(varargin{4}) && isvector(varargin{4}) && all(isint(varargin{4}))
                         if all(varargin{3}>=1) && all(varargin{3}<=12) && all(varargin{4}>=1) && all(varargin{3}<=31)
-                            o.time = [varargin{2}(:), varargin{3}(:), varargin{4}(:)];
+                            if length(varargin{2})==length(varargin{3}) && length(varargin{2})==length(varargin{4})
+                                o.time = NaN(length(varargin{2}),2);
+                                o.time(:,1) = datenum(varargin{2}(:), varargin{3}(:), varargin{4}(:));
+                            end
                         else
                             error('dates:ArgCheck','Third input must contain integers between 1 and %i.', o.freq)
                         end
@@ -174,9 +177,9 @@ end % classdef
 %$ d = dates(B1,B2,B3,B4);
 %$
 %$ % Check the results.
-%$ t(1) = dassert(d.time, e.time);
-%$ t(2) = dassert(d.freq, e.freq);
-%$ t(3) = dassert(d.ndat(), size(e.time, 1));
+%$ t(1) = isequal(d.time, e.time);
+%$ t(2) = isequal(d.freq, e.freq);
+%$ t(3) = isequal(d.ndat(), size(e.time, 1));
 %$ T = all(t);
 %@eof:1
 
@@ -195,9 +198,9 @@ end % classdef
 %$ d = dates(B1,B2,B3,B4);
 %$
 %$ % Check the results.
-%$ t(1) = dassert(d.time,e.time);
-%$ t(2) = dassert(d.freq,e.freq);
-%$ t(3) = dassert(d.ndat(), size(e.time, 1));
+%$ t(1) = isequal(d.time,e.time);
+%$ t(2) = isequal(d.freq,e.freq);
+%$ t(3) = isequal(d.ndat(), size(e.time, 1));
 %$ T = all(t);
 %@eof:2
 
@@ -216,9 +219,9 @@ end % classdef
 %$ d = dates(B1,B2,B3,B4);
 %$
 %$ % Check the results.
-%$ t(1) = dassert(d.time,e.time);
-%$ t(2) = dassert(d.freq,e.freq);
-%$ t(3) = dassert(d.ndat(), size(e.time, 1));
+%$ t(1) = isequal(d.time,e.time);
+%$ t(2) = isequal(d.freq,e.freq);
+%$ t(3) = isequal(d.ndat(), size(e.time, 1));
 %$ T = all(t);
 %@eof:3
 
@@ -237,9 +240,9 @@ end % classdef
 %$ d = dates(B1,B2,B3,B4);
 %$
 %$ % Check the results.
-%$ t(1) = dassert(d.time, e.time);
-%$ t(2) = dassert(d.freq, e.freq);
-%$ t(3) = dassert(d.ndat(), size(e.time, 1));
+%$ t(1) = isequal(d.time, e.time);
+%$ t(2) = isequal(d.freq, e.freq);
+%$ t(3) = isequal(d.ndat(), size(e.time, 1));
 %$ T = all(t);
 %@eof:4
 
@@ -251,14 +254,14 @@ end % classdef
 %$ % Call the tested routine.
 %$ d = B(2);
 %$ if isa(d,'dates')
-%$     t(1) = 1;
+%$     t(1) = true;
 %$ else
-%$     t(1) = 0;
+%$     t(1) = false;
 %$ end
 %$
 %$ if t(1)
-%$     t(2) = dassert(d.freq,B.freq);
-%$     t(3) = dassert(d.time,[1950 2]);
+%$     t(2) = isequal(d.freq,B.freq);
+%$     t(3) = isequal(d.time,[1950 2]);
 %$ end
 %$ T = all(t);
 %@eof:5
@@ -271,14 +274,14 @@ end % classdef
 %$ % Call the tested routine.
 %$ d = B(2);
 %$ if isa(d,'dates')
-%$     t(1) = 1;
+%$     t(1) = true;
 %$ else
-%$     t(1) = 0;
+%$     t(1) = false;
 %$ end
 %$
 %$ if t(1)
-%$     t(2) = dassert(d.freq,B.freq);
-%$     t(3) = dassert(d.time,[1950 2]);
+%$     t(2) = isequal(d.freq,B.freq);
+%$     t(3) = isequal(d.time,[1950 2]);
 %$ end
 %$ T = all(t);
 %@eof:6
@@ -290,14 +293,14 @@ end % classdef
 %$ % Call the tested routine.
 %$ d = B(2);
 %$ if isa(d,'dates')
-%$     t(1) = 1;
+%$     t(1) = true;
 %$ else
-%$     t(1) = 0;
+%$     t(1) = false;
 %$ end
 %$
 %$ if t(1)
-%$     t(2) = dassert(d.freq,B.freq);
-%$     t(3) = dassert(d.time,[1950 2]);
+%$     t(2) = isequal(d.freq,B.freq);
+%$     t(3) = isequal(d.time,[1950 2]);
 %$ end
 %$ T = all(t);
 %@eof:7
@@ -309,14 +312,14 @@ end % classdef
 %$ % Call the tested routine.
 %$ d = B(2);
 %$ if isa(d,'dates')
-%$     t(1) = 1;
+%$     t(1) = true;
 %$ else
-%$     t(1) = 0;
+%$     t(1) = false;
 %$ end
 %$
 %$ if t(1)
-%$     t(2) = dassert(d.freq,B.freq);
-%$     t(3) = dassert(d.time,[1950 2]);
+%$     t(2) = isequal(d.freq,B.freq);
+%$     t(3) = isequal(d.time,[1950 2]);
 %$ end
 %$ T = all(t);
 %@eof:8
@@ -324,9 +327,9 @@ end % classdef
 %@test:9
 %$ try
 %$   B = dates(4,[1950; 1950], [1; 2]);
-%$   t = 1;
+%$   t = true;
 %$ catch
-%$   t = 0;
+%$   t = false;
 %$ end
 %$
 %$ T = all(t);
@@ -334,11 +337,11 @@ end % classdef
 
 %@test:10
 %$ try
-%$   B = dates(365,[1956, 1956], [1, 1], [12, 13]);
-%$   t = 1;
+%$   B = dates(365,[1956; 1956], [1; 1], [12; 13]);
+%$   t = true;
 %$ catch
-%$   t = 0;
+%$   t = false;
 %$ end
 %$
 %$ T = all(t);
-%@eof:10
+%@eof:10
\ No newline at end of file
diff --git a/src/utilities/convert/date2string.m b/src/utilities/convert/date2string.m
index 9a94a8030ff6fa251d3bfbe39ab1131bf4afef64..0b985ede65cdf5169fda6fb93d2806ea1ba31bcb 100644
--- a/src/utilities/convert/date2string.m
+++ b/src/utilities/convert/date2string.m
@@ -3,14 +3,14 @@ function s = date2string(varargin) % --*-- Unitary tests --*--
 % Returns date as a string.
 %
 % INPUTS
-%  o varargin{1}     + dates object with one element, if nargin==1.
-%                    + 1*3 vector of integers (first element is the year, second and third elements are the subperiods), if nargin==3.
-%  o varargin{2}     integer scalar equal to 1, 2, 4, 12, 52 or 365 (frequency).
+% - varargin{1}     [dates]       scalar, if nargin==1.
+%                   [integer]     1×2 array, if nargin==2.
+% - varargin{2}     [integer]     scalar, frequency (1, 2, 4, 12, or 365).
 %
 % OUTPUTS
-%  o s               string.
+% - s               [char]        1×n array.
 
-% Copyright (C) 2013-2020 Dynare Team
+% Copyright © 2013-2020 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -27,8 +27,8 @@ function s = date2string(varargin) % --*-- Unitary tests --*--
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-if isequal(nargin,1)
-    if ~(isa(varargin{1},'dates') && isequal(length(varargin{1}),1))
+if isequal(nargin, 1)
+    if ~(isa(varargin{1}, 'dates') && isequal(length(varargin{1}), 1))
         error(['dates::format: Input argument ' inputname(1) ' has to be a dates object with one element!'])
     else
         time = varargin{1}.time;
@@ -36,20 +36,19 @@ if isequal(nargin,1)
     end
 end
 
-if isequal(nargin,2)
-    if ~(isvector(varargin{1}) && (isequal(length(varargin{1}),2) || isequal(length(varargin{1}),3)) && all(isint(varargin{1})) && isscalar(varargin{2} && ismember(varargin{2},[1 2 4 12 52 365])))
-        error(['dates::format: First input must be a 1*2 or 1*3 vector of integers and second input must be a scalar integer (1, 2, 4, 12, 52 or 365)!'])
-    else
-        if varargin{1}(2)>varargin{2} || varargin{1}(2)<1
-            error('dates::format: Second element of the first input be between 1 and %s!',num2str(varargin{2}))
-        end
-        time = varargin{1};
-        freq = varargin{2};
+if isequal(nargin, 2)
+    if ~isscalar(varargin{2}) || ~isint(varargin{2}) || ~ismember(varargin{2}, [1 2 4 12 365])
+        error('Second input argument must be an integer scalar equal to 1, 2, 4, 12, or 365 (frequency).')
+    end
+    freq = varargin{2};
+    if ~isnumeric(varargin{1}) || ~isrow(varargin{1}) || ~all(isint(varargin{1}(~isnan(varargin{1})))) || ~isequal(length(varargin{1}), 2)
+        error('First input must be a 1*2 array of integers.')
     end
+    time = varargin{1};
 end
 
-if freq == 365
-    s = [num2str(time(1),'%02d') '-' num2str(time(2),'%02d') '-' num2str(time(3),'%02d')];
+if freq==365
+    s = datestr(time(1), 'yyyy-mm-dd');
 else
     s = [num2str(time(1)) freq2string(freq)];
     if freq>1
@@ -57,99 +56,86 @@ else
     end
 end
 
+return
+
 %@test:1
-%$ try
-%$     str = date2string(dates('1938Q4'));
-%$     t(1) = true;
-%$ catch
-%$     t(1) = false;
-%$ end
-%$
-%$ if t(1)
-%$     t(2) = dassert(str, '1938Q4');
-%$ end
-%$
-%$ T = all(t);
+try
+    str = date2string(dates('1938Q4'));
+    t(1) = true;
+catch
+    t(1) = false;
+end
+
+if t(1)
+    t(2) = isequal(str, '1938Q4');
+end
+
+T = all(t);
 %@eof:1
 
 %@test:2
-%$ try
-%$     str = date2string(dates('1938Q4','1945Q3'));
-%$     t(1) = false;
-%$ catch
-%$     t(1) = true;
-%$ end
-%$
-%$ T = all(t);
+try
+    str = date2string(dates('1938Q4','1945Q3'));
+    t(1) = false;
+catch
+    t(1) = true;
+end
+
+T = all(t);
 %@eof:2
 
 %@test:3
-%$ try
-%$     str = date2string([1938, 11], 12);
-%$     t(1) = true;
-%$ catch
-%$     t(1) = false;
-%$ end
-%$
-%$ if t(1)
-%$     t(2) = dassert(str, '1938M11');
-%$ end
-%$
-%$ T = all(t);
+try
+    str = date2string([1938, 11], 12);
+    t(1) = true;
+catch
+    t(1) = false;
+end
+
+if t(1)
+    t(2) = isequal(str, '1938M11');
+end
+
+T = all(t);
 %@eof:3
 
 %@test:4
-%$ try
-%$     str = date2string([1938; 11], 12);
-%$     t(1) = true;
-%$ catch
-%$     t(1) = false;
-%$ end
-%$
-%$ if t(1)
-%$     t(2) = dassert(str, '1938M11');
-%$ end
-%$
-%$ T = all(t);
+try
+    str = date2string([1938, 11], 4);
+    t(1) = false;
+catch
+    t(1) = true;
+end
+
+T = all(t);
 %@eof:4
 
 %@test:5
-%$ try
-%$     str = date2string([1938; 11], 4);
-%$     t(1) = false;
-%$ catch
-%$     t(1) = true;
-%$ end
-%$
-%$ T = all(t);
+try
+    str = date2string([1938, 2], 2);
+    t(1) = true;
+catch
+    t(1) = false;
+end
+
+if t(1)
+    t(2) = isequal(str, '1938H2');
+end
+
+T = all(t);
 %@eof:5
 
 %@test:6
-%$ try
-%$     str = date2string([1938; 2], 2);
-%$     t(1) = true;
-%$ catch
-%$     t(1) = false;
-%$ end
-%$
-%$ if t(1)
-%$     t(2) = dassert(str, '1938H2');
-%$ end
-%$
-%$ T = all(t);
-%@eof:6
-
-%@test:7
-%$ try
-%$     str = date2string([1938; 1; 12], 365);
-%$     t(1) = true;
-%$ catch
-%$     t(1) = false;
-%$ end
-%$
-%$ if t(1)
-%$     t(2) = dassert(str, '1938-01-12');
-%$ end
-%$
-%$ T = all(t);
-%@eof:7
+try
+    str = date2string([707852, NaN], 365);
+    t(1) = true;
+catch
+    t(1) = false;
+end
+
+if t(1)
+    t(2) = isequal(str, '1938-01-12');
+end
+
+T = all(t);
+%@eof:6
\ No newline at end of file