diff --git a/lib/modules/Graphics.pmod/Graph.pmod/create_graph.pike b/lib/modules/Graphics.pmod/Graph.pmod/create_graph.pike
index 756ecdc01420344e1895b27eaf3674f8daeca748..5729f96e38f4e892eacd10d8131c3506f40cbf8c 100755
--- a/lib/modules/Graphics.pmod/Graph.pmod/create_graph.pike
+++ b/lib/modules/Graphics.pmod/Graph.pmod/create_graph.pike
@@ -1037,8 +1037,15 @@ mapping(string:mixed) create_graph(mapping diagram_data)
     start=diagram_data->xspace*ceil((start)/diagram_data->xspace);
     diagram_data->values_for_xnames=({start});
     while(diagram_data->values_for_xnames[-1]
-	  <= diagram_data->xmaxvalue-diagram_data->xspace)
+	  <= diagram_data->xmaxvalue-diagram_data->xspace) {
       diagram_data->values_for_xnames+=({start+=diagram_data->xspace});
+      if (diagram_data->values_for_xnames[-1] <=
+	  diagram_data->values_for_xnames[-2]) {
+	// Step smaller than mantissa or negative.
+	diagram_data->values_for_xnames = diagram_data->values_for_xnames[..<1];
+	break;
+      }
+    }
   }
   if (!(diagram_data->values_for_ynames))
   {
@@ -1051,8 +1058,15 @@ mapping(string:mixed) create_graph(mapping diagram_data)
     start=diagram_data->yspace*ceil((start)/diagram_data->yspace);
     diagram_data->values_for_ynames=({start});
     while(diagram_data->values_for_ynames[-1]
-	  <= diagram_data->ymaxvalue-diagram_data->yspace)
+	  <= diagram_data->ymaxvalue-diagram_data->yspace) {
       diagram_data->values_for_ynames+=({start+=diagram_data->yspace});
+      if (diagram_data->values_for_ynames[-1] <=
+	  diagram_data->values_for_ynames[-2]) {
+	// Step smaller than mantissa or negative.
+	diagram_data->values_for_ynames = diagram_data->values_for_ynames[..<1];
+	break;
+      }
+    }
   }
   
   //Generate the texten if it doesn't exist