--- /dev/null
+--- a/src/rrd_graph.c
++++ b/src/rrd_graph.c
+@@ -2049,7 +2049,7 @@ horizontal_log_grid(gdImagePtr gif, imag
+ char graph_label[100];
+ gdPoint polyPoints[4];
+ int styleMinor[2],styleMajor[2];
+- double value, pixperstep, minstep;
++ double value, pixperstep, minstep, yval;
+
+ /* find grid spaceing */
+ pixpex= (double)im->ysize / (log10(im->maxval) - log10(im->minval));
+@@ -2118,7 +2118,14 @@ horizontal_log_grid(gdImagePtr gif, imag
+
+ gdImageLine(gif, polyPoints[0].x,polyPoints[0].y,
+ polyPoints[1].x,polyPoints[0].y,gdStyled);
+- sprintf(graph_label,"%3.0e",value * yloglab[majoridx][i]);
++ yval = value * yloglab[majoridx][i];
++ if (yval >= 100000) {
++ sprintf(graph_label,"%3.0e", yval);
++ } else {
++ if (yval == 1) /* prints as 1e+00 */
++ yval = 0;
++ sprintf(graph_label,"%5.0f", yval);
++ }
+ gdImageString(gif, SmallFont,
+ (polyPoints[0].x - (strlen(graph_label) *
+ SmallFont->w)-7),