docs: def _shift_month(date, months, day_option='start'):
      """Shift the date to a month start or end a given number of months away.
      """
      delta_year = (date.month + months) // 12
      month = (date.month + months) % 12
  
      if month == 0:
          month = 12
          delta_year = delta_year - 1
      year = date.year + delta_year
  
      if day_option == 'start':
          day = 1
      elif day_option == 'end':
          reference = type(date)(year, month, 1)
          day = _days_in_month(reference)
      else:
          raise ValueError(day_option)
      # dayofwk=-1 is required to update the dayofwk and dayofyr attributes of
      # the returned date object in versions of cftime between 1.0.2 and
      # 1.0.3.4.  It can be removed for versions of cftime greater than
      # 1.0.3.4.
      return date.replace(year=year, month=month, day=day, dayofwk=-1)