function get_acedata, time0, time1, debug=debug, bad_data=bad_data, $
    status=status, missing=missing,  _extra=_extra, $
    daily=daily, monthly=monthly, keep_quality=keep_quality


bad_data=keyword_set(bad_data)
valid=1-bad_data                    
delete_quality=1-keyword_set(keep_quality) or bad_data

debug=keyword_set(debug)
retval=-1                                          ; assume the worst
status=0

if n_params() lt 2 then begin 
   box_message,['Need time range...', $
                'IDL> acedata=get_acedata(t0,t1 [,/TYPE ] [,status=status] )']
   return,retval
endif   

acefiles=ace_files(time0,time1, fcount, $           ;  ~relevant files
    _extra=_extra, daily=daily, monthly=monthly)

if fcount gt 0 then begin
   read_ace, acefiles, acedata,valid=valid, debug=debug, delete_quality=delete_quality ;ascii-> SSW str
   if data_chk(acedata,/struct) then begin 
      ss=sel_timrange(anytim(acedata,/ints), $      ; trim to user times
        anytim(time0,/ints),anytim(time1,/ints))
      if ss(0) ne -1 then retval=acedata(ss) else $     
        box_message,'No data found in time range'
   endif else box_message,'No valid data samples'   ; probably never
endif else begin 
   box_message,'No ACE files for timerange/type'
endelse

status=data_chk(retval,/struct)                      ; return success 
return, retval
end