code: def _interpolate_doy_calendar(source, doy_max):
      
      if 'dayofyear' not in source.coords.keys():
          raise AttributeError("source should have dayofyear coordinates.")
  
      # Interpolation of source to target dayofyear range
      doy_max_source = source.dayofyear.max()
  
      # Interpolate to fill na values
      tmp = source.interpolate_na(dim='dayofyear')
  
      # Interpolate to target dayofyear range
      tmp.coords['dayofyear'] = np.linspace(start=1, stop=doy_max, num=doy_max_source)
  
      return tmp.interp(dayofyear=range(1, doy_max + 1))
docs: Interpolate from one set of dayofyear range to another
  
      Interpolate an array defined over a `dayofyear` range (say 1 to 360) to another `dayofyear` range (say 1
      to 365).
  
      Parameters
      ----------
      source : xarray.DataArray
        Array with `dayofyear` coordinates.
      doy_max : int
        Largest day of the year allowed by calendar.
  
      Returns
      -------
      xarray.DataArray
        Interpolated source array over coordinates spanning the target `dayofyear` range.