<div dir="ltr">79043?<div><br></div><div>That's crazy.  It's also a prime number.  So, that's weird.</div></div><div class="gmail_extra"><br clear="all"><div><font size="4"><i><span style="font-family:garamond,serif">-</span><font style="font-family:garamond,serif"> Chad W. Smith</font></i></font><div>

<font size="1"></font></div></div>
<br><br><div class="gmail_quote">On Tue, Oct 8, 2013 at 10:37 PM, Robert A. Kelly III <span dir="ltr"><<a href="mailto:bluethegrappler@gmail.com" target="_blank">bluethegrappler@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">On 10/08/2013 09:39 PM, Robert A. Kelly III wrote:<br>
> I found the problem in the HebToJul() function in hbcal.c:<br>
><br>
> int HebToJul(int hy, int hm, int hd)<br>
> {<br>
>     int ylen;<br>
>     char const *monlens;<br>
>     int rh;<br>
>     int m;<br>
><br>
>     /* Do some range checking */<br>
>     if (hy - 3761 < BASE || hy - 3760 > BASE+YR_RANGE) return -1;<br>
><br>
>     ylen = DaysInHebYear(hy);<br>
>     monlens = DaysInHebMonths(ylen);<br>
><br>
>     /* Get the Rosh Hashana of the year */<br>
>     rh = RoshHashana(hy);<br>
><br>
>     /* Bump up to the appropriate month */<br>
>     for (m=0; m<hm; m++) rh += monlens[m];<br>
><br>
>     /* Add in appropriate number of days */<br>
>     rh += hd - 1;<br>
>     return rh;<br>
> }<br>
><br>
> When this function returns <0, GetNextHebrewDate() returns E_DATE_OVER.<br>
> Quick and dirty fix, commenting out the range checking line allowed me<br>
> to determine that the next date of Thanksgivukkah is indeed November 23,<br>
> 79043!<br>
<br>
</div>A further examination shows that YR_RANGE is based on the assumption of<br>
a 32-bit signed integer:<br>
<br>
/*---------------------------------------------------------------------*/<br>
/* YR_RANGE: The range of years allowed.  With 32-bit signed integers, */<br>
/* the DATETIME type can store 2^31 minutes or about 4074 years.       */<br>
/*---------------------------------------------------------------------*/<br>
#define YR_RANGE 4000<br>
<br>
With a 64-bit signed integer, it should be safe to use:<br>
<br>
#define YR_RANGE 17536635926176<br>
<br>
Incidentally, I also noticed that the location for calculating things<br>
like sunrise and sunset is hardcoded with the assumption of Ottawa,<br>
Ontario, Canada. I guess remind really was intended to be compiled by<br>
the user, LOL. It truly is, there is actually a GUI that lets you set<br>
your latitude and longitude when you compile it. YR_RANGE, however, is<br>
not intended to be altered so easily. The compile script should probably<br>
automatically check for a 64-bit architecture and adjust accordingly.<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
Chugalug mailing list<br>
<a href="mailto:Chugalug@chugalug.org">Chugalug@chugalug.org</a><br>
<a href="http://chugalug.org/cgi-bin/mailman/listinfo/chugalug" target="_blank">http://chugalug.org/cgi-bin/mailman/listinfo/chugalug</a><br>
</div></div></blockquote></div><br></div>