diff --git a/src/main/java/com/kosherjava/zmanim/hebrewcalendar/JewishCalendar.java b/src/main/java/com/kosherjava/zmanim/hebrewcalendar/JewishCalendar.java
index 7b162027..1d50c08f 100644
--- a/src/main/java/com/kosherjava/zmanim/hebrewcalendar/JewishCalendar.java
+++ b/src/main/java/com/kosherjava/zmanim/hebrewcalendar/JewishCalendar.java
@@ -1395,13 +1395,15 @@ public int getTekufasTishreiElapsedDays() {
double solar = (getJewishYear() - 1) * 365.25;
return (int) Math.floor(days - solar);
}
-
+
/**
* Calculates the hours for when the Tekufa (season) changes.
* There are 4 tekufos a year: Nissan/Spring, Tammuz/Summer, Tishri/Fall, and Teves/Winter. This calculation is
* according to Shmuel in Eruvin 56a, which is a more rounded up version of Rav Adda's calculation. The Rav Adda's calculation. This calculation follows the Levush in the end of Siman 428,
+ * who writes that the hours to calculate the tekufa are based on regular clock hours and not proportional hours, and that the time
+ * for the tekufa are based on 6 hours after the previous day's Midday. The Rama writes in Yoreh De'ah 116:5 that one should not drink water during
* the tekufa change. Rabbi Ovadia Yosef (Halichot Olam,
@@ -1426,18 +1428,20 @@ private Double getTekufa() {
return null;
}
}
-
+
/**
* Returns an {@code Instant} if the current day has a Tekufa
* (season) change. The {@code Instant} will contain the time that the tekufa (season) is arriving. If this method is
* called on a day without a tekufa change, it will return a {@code null}. The default implementation of this method
* will return the tekufa change according to the calculations of the Luach Itim
* Lebinah following Rabbi Yechiel Michel Tucazinsky.
- * However, there is also the opinion of Rabbi Yonah Boron, who calculates the tekufa based on Local Mean Time (LMT)
- * in Israel which causes a 21-minute difference. There is a third opinion as well to use seasonal midday but that is not a
- * generally followed opinion, so it has not been implemented.
+ * However, there is also the opinion of Rabbi Yonah Martzbach, who calculates the tekufa based on Local Mean Time (LMT)
+ * in Israel which causes a 21-minute difference.
+ * It should be noted that this method only covers two opinions of how to calculate the tekufa (based on 6 hours after Midday of the day before the tekufa).
+ * The Rosh (Tosafos HaRosh Berachos 3:2) is of the opinion that the calculation starts at sunset and to use proportional hours.
+ * While the Tashbetz (Shut Tashbetz Chelek 1, Siman 109) is also of the opinion that the calculation starts at sunset, however, he writes to use regular hours.
* @param useLocalMeanTime if true, removes ~21 minutes from the time of the tekufa calculated by Rabbi Yechiel Michel
- * Tucazinsky, and will follow the opinion of Rabbi Yonah Boron.
+ * Tucazinsky, and will follow the opinion of Rabbi Yonah Martzbach.
* @return an Instant with the time that the tekufa (season) changes or a null on a day with no tekufa change.
* @see #getTekufa()
*/
@@ -1451,11 +1455,18 @@ public Instant getTekufaAsInstant(boolean useLocalMeanTime) {
// formatter class used to display the Instant.
ZoneId yerushalayimStandardTZ = ZoneId.of("GMT+2");
- hours = hours - 6; // minus 6 hours because the hebrew date starts at sunset which is at 6PM
+ hours -= 6; // minus 6 hours because the hebrew date starts at sunset which is at 6PM
+
+ LocalDate tekufaDate = getLocalDate();
+ if (hours < 0) {
+ hours += 24;
+ tekufaDate = tekufaDate.minusDays(1);
+ }
+
int minutes = (int) ((hours - hours.intValue()) * 60);
LocalTime time = LocalTime.of(hours.intValue(), minutes);
- ZonedDateTime tekufaZDT = ZonedDateTime.of(getLocalDate(), time, yerushalayimStandardTZ);
+ ZonedDateTime tekufaZDT = ZonedDateTime.of(tekufaDate, time, yerushalayimStandardTZ);
// Har Habayis at a longitude of 35.2354 offset vs longitude 35 in standard time, so we subtract the time difference
// of 20.94 minutes (20 minutes and 56 seconds and 496 millis) to get to Standard time from local mean time