function minmax,tdata, $
MAX_VALUE = max_value, $
MIN_VALUE = min_value, $
POSITIVE = positive, $
SUBSCRIPT_MIN = subscript_min, $
SUBSCRIPT_MAX = subscript_max, $
NAN = nan, $
MXSUBSCRIPT=subs
on_error,2
if keyword_set(positive) then min_value = 0
dtype = size(/type,tdata)
badreturn = make_array(2,type=dtype)
w = where(finite(tdata),count)
if count eq 0 then return,badreturn
data = tdata[w]
if n_elements(max_value) then begin
w = where( data lt max_value ,count)
if count eq 0 then return,badreturn
data = data[w]
endif
if n_elements(min_value) then begin
w = where( data gt min_value, count)
if count eq 0 then return,badreturn
data = data[w]
endif
mx = max(data,MIN=mn)
return,[mn,mx]
end