code: private static void writeZonePropsByDOW_GEQ_DOM_sub(Writer writer, int month,
              int dayOfMonth, int dayOfWeek, int numDays, long untilTime, int fromOffset) throws IOException {
  
          int startDayNum = dayOfMonth;
          boolean isFeb = (month == Calendar.FEBRUARY);
          if (dayOfMonth < 0 && !isFeb) {
              // Use positive number if possible
              startDayNum = MONTHLENGTH[month] + dayOfMonth + 1;
          }
          beginRRULE(writer, month);
          writer.write(ICAL_BYDAY);
          writer.write(EQUALS_SIGN);
          writer.write(ICAL_DOW_NAMES[dayOfWeek - 1]);    // SU, MO, TU...
          writer.write(SEMICOLON);
          writer.write(ICAL_BYMONTHDAY);
          writer.write(EQUALS_SIGN);
  
          writer.write(Integer.toString(startDayNum));
          for (int i = 1; i < numDays; i++) {
              writer.write(COMMA);
              writer.write(Integer.toString(startDayNum + i));
          }
  
          if (untilTime != MAX_TIME) {
              appendUNTIL(writer, getDateTimeString(untilTime + fromOffset));
          }
          writer.write(NEWLINE);
      }
docs: /*
  Called from writeZonePropsByDOW_GEQ_DOM