diff --git a/doc/dynare.texi b/doc/dynare.texi
index f16cf87369aa01760c4b724f675ce16e446f2cb7..6ebe67ba0084adda6ebcc7915eb83a7f9a716a32 100644
--- a/doc/dynare.texi
+++ b/doc/dynare.texi
@@ -8359,7 +8359,7 @@ Whether or not to show vertical lines separating the columns. Default: @code{fal
 @end defmethod
 
 @anchor{addSeries}
-@defmethod Report addSeries data, graphLineColor, graphLineStyle, graphLineWidth, graphMarker, graphMarkerEdgeColor, graphMarkerFaceColor, graphMarkerSize, tableShowMarkers, tableAlignRight, tableNegColor, tablePosColor
+@defmethod Report addSeries data, graphLineColor, graphLineStyle, graphLineWidth, graphMarker, graphMarkerEdgeColor, graphMarkerFaceColor, graphMarkerSize, tableShowMarkers, tableAlignRight, tableNegColor, tablePosColor, zerotol
 Adds a @code{Series} to a @code{Graph} or a @code{Table}.
 @optionshead
 @table @code
@@ -8413,6 +8413,11 @@ zero. Default: @code{`red'}
 The color to use when marking Table data that is greater than
 zero. Default: @code{`blue'}
 
+@item zerotol, @code{DOUBLE}
+The zero tolerance. Anything smaller than @code{zerotol} and larger
+than @code{-zerotol} will be set to zero before being
+graphed. Default: @math{1e-6}
+
 @end table
 @end defmethod
 
diff --git a/matlab/reports/@series/getLine.m b/matlab/reports/@series/getLine.m
index c1f61c61c4ed8d8b025c145fc79a7d6312fdfa41..829bf8222c359a7913c4758da22acd124a0793d0 100644
--- a/matlab/reports/@series/getLine.m
+++ b/matlab/reports/@series/getLine.m
@@ -60,6 +60,9 @@ assert(~(strcmp(o.graphLineStyle, 'none') && isempty(o.graphMarker)), ['@series.
 % Validate xrange
 assert(isempty(xrange) || isa(xrange, 'dynDates'));
 
+% Zero tolerance
+assert(isfloat(o.zerotol), '@series.write: zerotol must be a float');
+
 %%
 if isempty(xrange) || xrange == o.data.time
     ds = o.data;
@@ -67,8 +70,18 @@ else
     ds = o.data(xrange);
 end
 
-opt = {'XData', 1:length(ds.data)};
-opt = {opt{:}, 'YData', ds.data};
+% if graphing data that is within zerotol, set to zero, create series and
+% get line:
+thedata = ds.data;
+stz = bsxfun(@and, ...
+             bsxfun(@lt, thedata, o.zerotol), ...
+             bsxfun(@gt, thedata, -o.zerotol));
+if any(stz)
+    thedata(stz) = 0;
+end
+
+opt = {'XData', 1:length(thedata)};
+opt = {opt{:}, 'YData', thedata};
 
 opt = {opt{:}, 'Color', o.graphLineColor};
 opt = {opt{:}, 'LineStyle', o.graphLineStyle};
diff --git a/matlab/reports/@series/series.m b/matlab/reports/@series/series.m
index cf6f2db9a6b9a524802919473f3ef48d8b7078c4..6493dced7ce6ac6f7c43b63e06bc99ef503126c8 100644
--- a/matlab/reports/@series/series.m
+++ b/matlab/reports/@series/series.m
@@ -51,6 +51,8 @@ o.tableMarkerLimit = 1e-4;
 
 o.tableAlignRight = false;
 
+o.zerotol = 1e-6;
+
 if nargin == 1
     assert(isa(varargin{1}, 'series'),['@series.series: with one arg you ' ...
                         'must pass a series object']);