function calculate_date($holiday, &$holidays, $year, &$i)
 {
     //		if($holiday['day'] == 0 && $holiday['dow'] != 0 && $holiday['occurence'] != 0)
     if ($holiday['day'] == 0 && $holiday['occurence'] != 0) {
         if ($holiday['occurence'] != 99) {
             $dow = phpgw_datetime::day_of_week($year, $holiday['month'], 1);
             $day = 7 * $holiday['occurence'] - 6 + ($holiday['dow'] + 7 - $dow) % 7;
             $day += $day < 1 ? 7 : 0;
             // What is the point of this?
             // Add 7 when the holiday falls on a Monday???
             //$day += ($holiday['dow']==1 ? 7 : 0);
             // Sometimes the 5th occurance of a weekday (ie the 5th monday)
             // can spill over to the next month.  This prevents that.
             $ld = phpgw_datetime::days_in_month($holiday['month'], $year);
             if ($day > $ld) {
                 return;
             }
         } else {
             $ld = phpgw_datetime::days_in_month($holiday['month'], $year);
             $dow = phpgw_datetime::day_of_week($year, $holiday['month'], $ld);
             $day = $ld - ($dow + 7 - $holiday['dow']) % 7;
         }
     } else {
         $day = $holiday['day'];
         if ($holiday['observance_rule'] == True) {
             $dow = phpgw_datetime::day_of_week($year, $holiday['month'], $day);
             // This now calulates Observed holidays and creates a new entry for them.
             if ($dow == 0) {
                 ++$i;
                 $holidays[$i]['locale'] = $holiday['locale'];
                 $holidays[$i]['name'] = $holiday['name'] . ' (Observed)';
                 $holidays[$i]['day'] = $holiday['day'] + 1;
                 $holidays[$i]['month'] = $holiday['month'];
                 $holidays[$i]['occurence'] = $holiday['occurence'];
                 $holidays[$i]['dow'] = $holiday['dow'];
                 $holidays[$i]['date'] = mktime(0, 0, 0, $holiday['month'], $day + 1, $year);
                 $holidays[$i]['obervance_rule'] = 0;
             } else {
                 if ($dow == 6) {
                     ++$i;
                     $holidays[$i]['locale'] = $holiday['locale'];
                     $holidays[$i]['name'] = $holiday['name'] . ' (Observed)';
                     $holidays[$i]['day'] = $holiday['day'] - 1;
                     $holidays[$i]['month'] = $holiday['month'];
                     $holidays[$i]['occurence'] = $holiday['occurence'];
                     $holidays[$i]['dow'] = $holiday['dow'];
                     $holidays[$i]['date'] = mktime(0, 0, 0, $holiday['month'], $day - 1, $year);
                     $holidays[$i]['obervance_rule'] = 0;
                 }
             }
         }
     }
     $date = mktime(0, 0, 0, $holiday['month'], $day, $year);
     return $date;
 }