From 71275ae72c44a20664418ee581ca05084ff71fce Mon Sep 17 00:00:00 2001
From: Niklas Polke <niklas.polke@gmx.de>
Date: Wed, 8 Apr 2015 18:34:08 +0200
Subject: [PATCH] display correct axis ticks if axis-max < axis-min

---
 .../xeiam/xchart/internal/chartpart/AxisTickCalculator.java    | 3 ++-
 .../xchart/internal/chartpart/AxisTickNumericalCalculator.java | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickCalculator.java
index ebf08cef..fa0364ab 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickCalculator.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickCalculator.java
@@ -103,7 +103,8 @@ public abstract class AxisTickCalculator {
     // System.out.println("******");
 
     // double firstPosition = minValue - (minValue % gridStep) + gridStep;
-    double firstPosition = minValue - (minValue % gridStep) - gridStep;
+    double absoluteMinValue = minValue <= maxValue ? minValue : maxValue; 
+    double firstPosition = absoluteMinValue - (absoluteMinValue % gridStep) - gridStep;
     //
     // if ((firstPosition - minValue) > gridStep) {
     // firstPosition = minValue - (minValue % gridStep);
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java
index 75c33974..18ab2640 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java
@@ -72,7 +72,8 @@ public class AxisTickNumericalCalculator extends AxisTickCalculator {
     // System.out.println("cleanedFirstPosition: " + cleanedFirstPosition);
 
     // generate all tickLabels and tickLocations from the first to last position
-    for (BigDecimal tickPosition = cleanedFirstPosition; tickPosition.compareTo(BigDecimal.valueOf(maxValue + 2 * cleanedGridStep.doubleValue())) < 0; tickPosition = tickPosition.add(cleanedGridStep)) {
+    double absoluteMaxValue = minValue <= maxValue ? maxValue : minValue;
+    for (BigDecimal tickPosition = cleanedFirstPosition; tickPosition.compareTo(BigDecimal.valueOf(absoluteMaxValue + 2 * cleanedGridStep.doubleValue())) < 0; tickPosition = tickPosition.add(cleanedGridStep)) {
 
       // System.out.println(tickPosition);
       String tickLabel = numberFormatter.formatNumber(tickPosition, minValue, maxValue, axisDirection);
-- 
GitLab