function anytim2fid, times0, times1, uniq=uniq
;
;   Name: anytim2fid
;
;   Purpose: return fids for specified times
;
;   Input Parameters:
;      times0 - scaler start time (or one time) or vector of desired times
;      times1 - (only if times0 is scaler - define stop time for fidlist)
;
;   Calling Sequence & Examples:
;      fid    =anytim2fid(time)			   ; fid for input time
;      fidlist=anytim2fid(timevector [,/uniq])	   ; fids for specified times
;      fidlist=anytim2fid(starttime,stoptime)	   ; all fids in range (uniq)
;
;   Method: 
;      call tim2orbit (loop w/scalers or pass vector depending on efficiency)
;
;  History:
;      22-Nov-1994 (SLF)
;      25-Nov-1994 (SLF) - typo fix (tim2dset->tim2orbit)
;       3-Dec-1994 (SLF) - made sure it gets last fid in a range via timegrid
;-
; 
fidlist=''
uniq=keyword_set(uniq) or n_params() eq 2

case 1 of
   n_params() eq 1: begin
;     determine efficient way to call tim2orbit
      secs=int2secarr(times0)
      gcnt=0
      if n_elements(times0) gt 1 then biggap=where( abs(deriv_arr(secs)) gt 6.*3600,gcnt) ; arbitrary 6 hour gap 
      if gcnt gt 0 then begin
         message,/info,"Gap > 6 hours,  looping throught tim2orbit..."
         for i=0,n_elements(times0)-1 do begin
            tim2orbit,times0(i), fid=fidi
            fidlist=[fidlist,fidi]  
         endfor
         fidlist=fidlist(1:*)
      endif else tim2orbit, times0, fid=fidlist  ; else, vector to tim2orbit
   endcase

   n_params() eq 2: begin
      gridtimes=timegrid(times0, times1, /hour,/string)    ; time grid, delta T=hour
      tim2orbit,[gridtimes,fmt_tim(times1)],fid=fidlist
   endcase

   else: begin
      message,/info,"Call: IDL> fidlist=anytim2fid(times [,/uniq] ) OR"
      message,/info,"      IDL> fidlist=anytim2fid(starttim, stoptim)
      return,fidlist
   endcase

endcase

if keyword_set(uniq) then fidlist=fidlist(uniq(fidlist,sort([fidlist])))

if n_elements(fidlist) eq 1 then fidlist=fidlist(0)	; 1 element? make scaler

return, fidlist
end
