adjustedYear = year - cycles * CYCLE_YEARS;
adjustedYear = (int16)(year - cycles * CYCLE_YEARS);
new_explode(jsdouble time, PRMJTime *split, JSBool findEquivalent){    jsint year = YearFromTime(time);    int16 adjustedYear;    /* If the year doesn't fit in a PRMJTime, find something to do about it. */    if (year > 32767 || year < -32768) {        if (findEquivalent) {            /* We're really just trying to get a timezone string; map the year             * to some equivalent year in the range 0 to 2800.  Borrowed from             * A. D. Olsen.             */            jsint cycles;#define CYCLE_YEARS 2800L            cycles = (year >= 0) ? year / CYCLE_YEARS                                 : -1 - (-1 - year) / CYCLE_YEARS;            adjustedYear = year - cycles * CYCLE_YEARS;        } else {            /* Clamp it to the nearest representable year. */            adjustedYear = (year > 0) ? 32767 : - 32768;        }    } else {        adjustedYear = (int16)year;    }    split->tm_usec = (int32) msFromTime(time) * 1000;    split->tm_sec = (int8) SecFromTime(time);    split->tm_min = (int8) MinFromTime(time);    split->tm_hour = (int8) HourFromTime(time);    split->tm_mday = (int8) DateFromTime(time);    split->tm_mon = (int8) MonthFromTime(time);    split->tm_wday = (int8) WeekDay(time);    split->tm_year = (int16) adjustedYear;    split->tm_yday = (int16) DayWithinYear(time, year);    /* not sure how this affects things, but it doesn't seem       to matter. */    split->tm_isdst = (DaylightSavingTA(time) != 0);}