pro bcs_bpcfs,bpc_data,chan,specrange
;
; fill in the gaps in a range of spectra
;
debug = 0
;
;
exdata_mask = where (bpc_data(chan-1,specrange).quality(0) ne 0,edc)
nodata_mask = where (bpc_data(chan-1,specrange).quality(0) eq 0,ndc)
;
if (ndc eq 0) then return
if (edc eq 0) then return

print,'filling',ndc,'spectra'

for uu = 0,ndc-1 do begin
  ; find closest real with bias towards upper end of flare
  closest = 0
  close_up = where(exdata_mask gt nodata_mask(uu),cuc)
  close_lo = where(exdata_mask lt nodata_mask(uu),clc)

  if (cuc eq 0) and (clc eq 0) then begin
    print,'fil_spec: problem accessing closest neighbour'
    stop
    endif
  if (cuc eq 0) then begin
    closest = exdata_mask(close_lo(clc-1))
    endif
  if (clc eq 0) then begin
    closest = exdata_mask(close_up(0))
    endif
  if (closest eq 0) then begin
        close_up = exdata_mask(close_up(0))
    close_lo = exdata_mask(close_lo(clc-1))
    if (abs(close_up-nodata_mask(uu)) ge abs(close_lo-nodata_mask(uu))) then begin
        closest = close_up 
        endif else begin
        closest = close_lo  
        endelse
    endif
   ; now have closest copy all across 
   bpc_data(chan-1,specrange(nodata_mask(uu))) = bpc_data(chan-1,specrange(closest))   
   ; rationalise times hope sdgi was not changed here.
   diff = specrange(nodata_mask(uu))-specrange(closest)
   diff = diff * bpc_data(chan-1,specrange(closest)).sdgi
   realextime = lonarr(7)
   realextime = [bpc_data(chan-1,specrange(closest)).time(0:2),0,bpc_data(chan-1,specrange(closest)).time(3:5)] 
   realextime(6) = realextime(6) - 1900
   ex2int,realextime,msod,ds79
   msod=msod+(diff*1000.)
   int2ex,msod,ds79,difftime
   reftime = [difftime(0:2),difftime(4:6)]
   reftime(5) = reftime(5) + 1900
if debug eq 1 then begin
print,'Fill c - ',chan,'s - ',nodata_mask(uu)+1
print,'t0 ',realextime,' t1 ',reftime
endif 
   bpc_data(chan-1,specrange(nodata_mask(uu))).time = reftime
;stop
   endfor   
end