diff --git a/doc/dynare.texi b/doc/dynare.texi
index d0aed6a71d240b686900f094f72b19f33dd291ee..9ad6e91a7e37441701592d2d61e32169f0accc08 100644
--- a/doc/dynare.texi
+++ b/doc/dynare.texi
@@ -11239,7 +11239,7 @@ command. Default: @code{`!'}
 @end defmethod
 
 @anchor{addGraph}
-@defmethod Report addGraph data, graphDirName, graphName, graphSize, height, showGrid, showLegend, showLegendBox, legendLocation, legendOrientation, legendFontSize, miscTikzAxisOptions, miscTikzPictureOptions, seriesToUse, shade, shadeColor, shadeOpacity, title, width, xlabel, ylabel, xAxisTight, xrange, xTicks, xTickLabels, xTickLabelAnchor, xTickLabelRotation, yAxisTight, yTickLabelFixed, yTickLabelPrecision, yTickLabelZeroFill, yrange, showZeroline
+@defmethod Report addGraph data, graphDirName, graphName, graphSize, height, showGrid, showLegend, showLegendBox, legendLocation, legendOrientation, legendFontSize, miscTikzAxisOptions, miscTikzPictureOptions, seriesToUse, shade, shadeColor, shadeOpacity, title, width, xlabel, ylabel, xAxisTight, xrange, xTicks, xTickLabels, xTickLabelAnchor, xTickLabelRotation, yAxisTight, yTickLabelFixed, yTickLabelPrecision, yTickLabelZeroFill, yrange, showZeroline, zeroLineColor
 Adds a @code{Graph} to a @code{Section}.
 @optionshead
 @table @code
@@ -11390,9 +11390,14 @@ The precision with which to report the yTickLabel. Default: @code{1}
 @item yTickLabelZeroFill, @code{BOOLEAN}
 Whether or not to fill missing precision spots with zeros. Default: @code{true}
 
+@anchor{showZeroLine}
 @item showZeroline, @code{BOOLEAN}
 Display a solid black line at @math{y = 0}. Default: @code{false}
 
+@item zeroLineColor, @code{`red'} | @code{`green'} | @code{`blue'} | @code{`cyan'} | @code{`magenta'} | @code{`yellow'} | @code{`black'} | @code{`gray'} | @code{`darkgray'} | @code{`lightgray'} | @code{`brown'} | @code{`lime'} | @code{`olive'} | @code{`orange'} | @code{`pink'} | @code{`purple'} | @code{`teal'} | @code{`violet'} | @code{`white'}
+The color to use for the zero line. Only used if @ref{showZeroLine} is
+true. Default: @code{`black'}
+
 @end table
 @end defmethod
 
diff --git a/matlab/reports/@graph/graph.m b/matlab/reports/@graph/graph.m
index 2d9f9756065ff67cdc831c82c306543693a3f130..d9bab84806d184b80c94d846b2ef791e4944c3bc 100644
--- a/matlab/reports/@graph/graph.m
+++ b/matlab/reports/@graph/graph.m
@@ -62,6 +62,7 @@ o.legendOrientation = 'horizontal';
 o.legendFontSize = 'tiny';
 
 o.showZeroline = false;
+o.zeroLineColor = 'black';
 
 o.graphSize = [];
 o.xTicks = [];
@@ -132,12 +133,13 @@ assert(ischar(o.xTickLabelAnchor), '@graph.graph: xTickLabelAnchor must be a str
 assert(isint(o.yTickLabelPrecision), '@graph.graph: o.yTickLabelPrecision must be an integer');
 assert(islogical(o.yTickLabelFixed), '@graph.graph: yTickLabelFixed must be either true or false');
 assert(islogical(o.yTickLabelZeroFill), '@graph.graph: yTickLabelZeroFill must be either true or false');
-
 valid_shadeColor = {'red', 'green', 'blue', 'cyan ', 'magenta', 'yellow', ...
                     'black', 'gray', 'darkgray', 'lightgray', 'brown', ...
                     'lime', 'olive', 'orange', 'pink', 'purple', 'teal', 'violet', 'white'};
 assert(any(strcmp(o.shadeColor, valid_shadeColor)), ['@graph.graph: shadeColor must be one of ' ...
         strjoin(valid_shadeColor)]);
+assert(any(strcmp(o.zeroLineColor, valid_shadeColor)), ...
+       ['@graph.graph: zeroLineColor must be one of ' strjoin(valid_shadeColor)]);
 
 valid_legend_locations = ...
     {'south west','south east','north west','north east','outer north east'};
diff --git a/matlab/reports/@graph/writeGraphFile.m b/matlab/reports/@graph/writeGraphFile.m
index bfa480245b62d9598a40ea6c1aea281dfc3c778d..79b8af745761434223d54139fd6724937af35839 100644
--- a/matlab/reports/@graph/writeGraphFile.m
+++ b/matlab/reports/@graph/writeGraphFile.m
@@ -212,7 +212,8 @@ if ~isempty(o.shade)
 end
 
 if o.showZeroline
-    fprintf(fid, '%%zeroline\n\\addplot[black,line width=.5,forget plot] coordinates {(1,0)(%d,0)};\n',dd.ndat);
+    fprintf(fid, '%%zeroline\n\\addplot[%s,line width=.5,forget plot] coordinates {(1,0)(%d,0)};\n', ...
+        o.zeroLineColor, dd.ndat);
 end
 
 for i=1:ne
diff --git a/tests/reporting/example1.mod b/tests/reporting/example1.mod
index bec34f5b51ff1f799a433a5cd227390d23bfae30..10b2aef3c8a61ea0bc3694a5b5d7938fa3fdb8a7 100644
--- a/tests/reporting/example1.mod
+++ b/tests/reporting/example1.mod
@@ -65,8 +65,9 @@ r = report();
     r = r.addSection('cols', 2);
 @#  for var in endovars
       r = r.addGraph('data', shock@{shock}.@{var}, 'title', '@{var}', ...
-                     'showGrid', false, 'yTickLabelPrecision', 2, 'yTickLabelZeroFill', false);
-      r = r.addSeries('graphHline', 0, 'graphLineColor', 'red');
+                     'showGrid', false, 'yTickLabelPrecision', 2, ...
+                     'yTickLabelZeroFill', false, ...
+                     'showZeroLine', true, 'zeroLineColor', 'red');
 @#  endfor
     r = r.addVspace('number', 2);
     r = r.addSection('cols', 1);