diff --git a/matlab/reporting/@table/table.m b/matlab/reporting/@table/table.m
index 0dd6ffa873093c93ceb6d414f4cce5534967a230..8be93205593d6a2b910de7ea4404c7f813014f63 100644
--- a/matlab/reporting/@table/table.m
+++ b/matlab/reporting/@table/table.m
@@ -75,9 +75,9 @@ assert(ischar(o.config), '@table.table: config file must be a string');
 assert(islogical(o.hlines), '@table.table: hlines must be true or false');
 assert(islogical(o.vlines), '@table.table: vlines must be true or false');
 assert(isint(o.precision), '@table.table: precision must be an int');
-assert(isempty(o.range) || (iscell(o.range) && length(o.range) == 2 && ...
-                            ischar(o.range{1}) && ischar(o.range{2})), ...
-       ['@table.table: range is specified as ''{''1999q1'',''1999q2''}''.']);
+assert(isempty(o.range) || (isa(o.range, 'dynDates') && o.range.ndat >= 2), ...
+       ['@table.table: range is specified as a dynDates range, e.g. ' ...
+        '''dynDates(''1999q1''):dynDates(''1999q3'')''.']);
 
 assert(~isempty(o.data), '@table.table: must provide data');
 msg = ['@table.table: data must either be a dynSeries or a cell array of ' ...
diff --git a/matlab/reporting/@table/write.m b/matlab/reporting/@table/write.m
index 63d691c65418e7ee369f924026c858407962f985..d14238818dfdddbb67686f73ae3a70df7794d0f3 100644
--- a/matlab/reporting/@table/write.m
+++ b/matlab/reporting/@table/write.m
@@ -40,6 +40,10 @@ else
     ds = o.data{o.seriestouse{:}};
 end
 
+if ~isempty(o.range)
+    ds  = ds(o.range);
+end
+
 %number of left-hand columns, 1 until we allow the user to group data,
 % e.g.: GDP Europe
 %         GDP France