code: @Override
      public int getActualMinimum(int field) {
          if (field == DAY_OF_MONTH) {
              GregorianCalendar gc = getNormalizedCalendar();
              int year = gc.cdate.getNormalizedYear();
              if (year == gregorianCutoverYear || year == gregorianCutoverYearJulian) {
                  long month1 = getFixedDateMonth1(gc.cdate, gc.calsys.getFixedDate(gc.cdate));
                  BaseCalendar.Date d = getCalendarDate(month1);
                  return d.getDayOfMonth();
              }
          }
          return getMinimum(field);
      }
docs: Returns the minimum value that this calendar field could have,
  taking into consideration the given time value and the current
  values of the
  {@link Calendar#getFirstDayOfWeek() getFirstDayOfWeek},
  {@link Calendar#getMinimalDaysInFirstWeek() getMinimalDaysInFirstWeek},
  {@link #getGregorianChange() getGregorianChange} and
  {@link Calendar#getTimeZone() getTimeZone} methods.
  
  <p>For example, if the Gregorian change date is January 10,
  1970 and the date of this <code>GregorianCalendar</code> is
  January 20, 1970, the actual minimum value of the
  <code>DAY_OF_MONTH</code> field is 10 because the previous date
  of January 10, 1970 is December 27, 1996 (in the Julian
  calendar). Therefore, December 28, 1969 to January 9, 1970
  don't exist.
  
  @param field the calendar field
  @return the minimum of the given field for the time value of
  this <code>GregorianCalendar</code>
  @see #getMinimum(int)
  @see #getMaximum(int)
  @see #getGreatestMinimum(int)
  @see #getLeastMaximum(int)
  @see #getActualMaximum(int)
  @since 1.2