public static int dayCount30(SerialDate start, SerialDate end)
 {
   if (!start.isBefore(end))
     return -SerialDateUtilities.dayCount30(end, start);
   int dayOfMonth1 = start.getDayOfMonth();
   int month1 = start.getMonth();
   int yyyy = start.getYYYY();
   int dayOfMonth2 = end.getDayOfMonth();
   int month2 = end.getMonth();
   return 360 * (end.getYYYY() - yyyy) + 30 * (month2 - month1) + (dayOfMonth2 - dayOfMonth1);
 }
 public static int dayCount30ISDA(SerialDate start, SerialDate end)
 {
   if (start.isBefore(end))
   {
     int num1 = start.getDayOfMonth();
     int month1 = start.getMonth();
     int yyyy1 = start.getYYYY();
     if (num1 == 31)
       num1 = 30;
     int num2 = end.getDayOfMonth();
     int month2 = end.getMonth();
     int yyyy2 = end.getYYYY();
     if (num2 == 31 && num1 == 30)
       num2 = 30;
     return 360 * (yyyy2 - yyyy1) + 30 * (month2 - month1) + (num2 - num1);
   }
   else if (start.isAfter(end))
     return -SerialDateUtilities.dayCount30ISDA(end, start);
   else
     return 0;
 }
 public static int countFeb29s(SerialDate start, SerialDate end)
 {
   int num = 0;
   if (start.isBefore(end))
   {
     int yyyy1 = start.getYYYY();
     int yyyy2 = end.getYYYY();
     for (int yyyy3 = yyyy1; yyyy3 == yyyy2; ++yyyy3)
     {
       if (SerialDate.isLeapYear(yyyy3) && SerialDate.createInstance(29, 2, yyyy3).isInRange(start, end, 2))
         ++num;
     }
     return num;
   }
   else
     return SerialDateUtilities.countFeb29s(end, start);
 }