From 63b48929af25361fa0610fb12584523093bd4d33 Mon Sep 17 00:00:00 2001
From: Dennis Eisold <de@roadit.de>
Date: Tue, 29 Oct 2019 21:40:52 +0100
Subject: [PATCH] Fixed error in addiereTage

---
 src/de/itstall/Datum.java | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/src/de/itstall/Datum.java b/src/de/itstall/Datum.java
index 0a5e7d7..9500fdb 100644
--- a/src/de/itstall/Datum.java
+++ b/src/de/itstall/Datum.java
@@ -234,20 +234,30 @@ public class Datum {
 		long neuerTag = this.getTag() + iTage;
 
 		if (neuerTag > this.getMonthDays(this.getMonat())) {
+
 			do {
-				this.addiereMonate(neuerTag / this.getMonthDays(this.getMonat()));
-				neuerTag -= this.getMonthDays(this.getMonat());
-			} while (neuerTag / this.getMonthDays(this.getMonat()) < 1);
+				neuerTag = neuerTag - this.getMonthDays(this.getMonat());
+				this.addiereMonate(1);
+			} while (neuerTag > this.getMonthDays(this.getMonat()));
 
 			this.setTag(neuerTag % this.getMonthDays(this.getMonat()));
-		} else if (neuerTag <= 0) {
-			do {
-				this.addiereMonate(neuerTag / this.getMonthDays(this.getMonat()) - 1);
-				neuerTag -= this.getMonthDays(this.getMonat());
-			} while(neuerTag / this.getMonthDays(this.getMonat()) < 1);
 
-			this.setTag(this.getMonthDays(this.getMonat()) + neuerTag % this.getMonthDays(this.getMonat()));
-		} else {
+		}
+		else if (iTage < 0) {
+
+			neuerTag = this.getTag() + iTage;
+			long nextMonth = (this.getMonthDays(this.getMonat()) * -1);
+			
+			while(neuerTag <= nextMonth) {
+				this.addiereMonate(- 1);
+				neuerTag = neuerTag + this.getMonthDays(this.getMonat());
+				nextMonth = (this.getMonthDays(this.getMonat() - 1) * -1);
+			}
+
+			this.addiereMonate(- 1);
+			this.setTag( this.getMonthDays(this.getMonat()) + neuerTag);
+
+		} else if(iTage != 0) {
 			this.setTag(neuerTag);
 		}
 	}
-- 
GitLab