pro update_dpe, index, new_dpe, qstop=qstop
;
;
dpe_use_mask = [1,1,0,1,0,1,1,1,1,intarr(28)+0]         ;1=yes, 0=no
dpe2mbe      = [0,1,0,2,1,4,5,6,7,indgen(28)+2]
;
expres_arr = [intarr(5)+0, intarr(9)+1, intarr(11)+2, $
                intarr(5)+3, 3, intarr(19)+2, intarr(14)+3]
expres_msec_arr = [0.0016, 0.0512, 1.638, 52.429]       ;number of millisec
                                           ;per "tick" in expdur

if (new_dpe gt 36) or (new_dpe lt 0) then begin
    print, 'UPDATE_DPE: New DPE value must be between 0 and 36 inclusive'
    print, 'Returning...
    return
end
;
;---- Fix up the filter a issue
;
qmask = dpe_use_mask(new_dpe)
if (qmask) then begin
    v = index.sxt.periph
    ;v = fix(v/16)*16 + 6   ;set using mask, preserve the higher bits
    v = fix(v/8)*8 + 6      ;set using mask, preserve the higher bits - changed 7-Feb-95
    index.sxt.periph = v
end else begin
    ss = where(gt_filta(index) eq 6)
    if (ss(0) ne -1) then begin
    v = index(ss).sxt.periph
    ;v = fix(v/16)*16 + 1   ;clear using mask, preserve the higher bits
    v = fix(v/8)*8 + 1  ;clear using mask, preserve the higher bits - changed 7-Feb-95
    index(ss).sxt.periph = v
    end
end
;
;---- Fix up the DPE value
;
v = index.sxt.explevmode
v = fix(v/64)*64 + dpe2mbe(new_dpe)
index.sxt.explevmode = v
;
;---- Fix up the measured exposure
;
explev0 = dpe2mbe(new_dpe)  ;mbe value
expres  = expres_arr(explev0)   ;exposure resolution
expdur0 = gt_dpe(new_dpe,/conv) ;new exposure in milliseconds
ticks = expdur0 / expres_msec_arr(expres)
index.sxt.expdur = ticks
;
;---- If there is a history portion, then update that part
if (his_exist(index)) then begin
    index.his.expdur = gt_dpe(new_dpe,/conv)
end
;
if (keyword_set(qstop)) then stop
end