pro doy_to_month_date, year,doy,month,date
;+
;PROCEDURE:
;  doy_to_month_date, year, doy, month, date
;NAME:
;  doy_to_month_date
;PURPOSE:
; Determines month and date given the year and day of year.
; fast, vector oriented routine that returns the month and date given year and 
; day of year (1<=doy<=366)
;
;CREATED BY:	Davin Larson  Oct 1996
;FILE:  doy_to_month_date.pro
;VERSION:  1.2
;LAST MODIFICATION:  97/01/27
;-
common doy_mon_date_com1,months,dates
if not keyword_set(months) then begin    ; only needs to be computed once!
   mdt = [[0, 31,  59,  90, 120, 151, 181, 212, 243, 273, 304, 334, 365], $
          [0, 31,  60,  91, 121, 152, 182, 213, 244, 274, 305, 335, 366]]
   doys = [[indgen(366)],[indgen(366)]]
   isleap = [[replicate(0,366)],[replicate(1,366)]]
   months = doys/29
   dates = doys - mdt(months,isleap)
   w = where(dates lt 0,c)
   if c ne 0 then begin
      months(w) = months(w) -1
      dates(w) = doys(w) - mdt(months(w),isleap(w))
   endif
   months = months+1
   dates  = dates +1
endif

isleap = ((year mod 4) eq 0) - ((year mod 100) eq 0) + ((year mod 400) eq 0) - ((year mod 4000) eq 0)
month=months(doy-1,isleap)
date =dates(doy-1,isleap)

end