function time_average,time,data,newtime=newtime, $
trange=trange,resolution=resolution, $
ret_total=ret_tot,ret_min=ret_min,ret_median=ret_median
if not keyword_set(data) then return,data
d = data[0] * !values.f_nan
dim = dimen(data)
if keyword_set(trange) then tr = time_double(trange)
nd = size(/n_dimen,data)
if keyword_set(resolution) then begin
if not keyword_set(tr) then $
tr= (floor(minmax(time)/resolution)+[0,1]) * resolution
index = floor( (time-tr[0])/resolution )
nbins = round((tr[1]-tr[0])/resolution)
w = where( index lt 0 or index ge nbins, c)
if c ne 0 then index[w]=-1
newtime = (dindgen(nbins)+.5)*resolution+tr[0]
dim[0] = nbins
newdata = make_array(value=d,dimen=dim)
h = histogram(index,min=0,max=nbins-1,reverse=ri)
whn0 = where(h ne 0,count)
for j=0l,count-1 do begin
i = whn0[j]
ind = ri[ ri[i]: ri[i+1]-1 ]
if n_elements(ind) ne h[i] then dprint ,'Histogram error'
newdata[i,*,*] = average(data[ind,*,*],1,/nan,ret_total=ret_tot,ret_min=ret_min,ret_median=ret_median)
endfor
return,newdata
endif
if keyword_set(tr) then begin
w =where(time lt tr[1] and time ge tr[0],c)
if c eq 0 then begin
newtime=0
return,0
endif
newtime= time[w]
newdata= data[w,*,*]
return,newdata
endif
newtime = time
return,data
end