function aver_img, index, data, idx2, dat2, sub=sub, em=em, $
        aver_em=aver_em, unc_data=unc_data, nunc_data=nunc_data
;   ------------------------------------------------------------

    IF (n_elements(idx2) eq 0) THEN BEGIN   ;passing all data
      IF (n_elements(sub) ne 0) THEN BEGIN
        idx1 = index(sub(0))
        idx2 = index(sub(1))
        dat1 = data(*,*,sub(0))
        dat2 = data(*,*,sub(1))
            if n_elements(unc_data) ne 0 then begin
          unc_d1 = unc_data(*,*,sub(0))
          unc_d2 = unc_data(*,*,sub(1))
        endif
        if n_elements(em) ne 0 then begin
              em1_46 = 10^(em(sub(0))-44)
          em2_46 = 10^(em(sub(1))-44)
        endif
          ENDIF ELSE BEGIN
        PRINT, 'ERROR: Incorrect calling arguments--Returning'
        Return, -1
      ENDELSE
    ENDIF ELSE BEGIN        ;idx2 and dat2 are defined
      idx1 = index
      dat1 = data
      if n_elements(unc_data) ne 0 then begin
            unc_d1 = unc_data(*,*,0)    ;assume its passed correctly
        unc_d2 = unc_data(*,*,1)
      endif
      if n_elements(em) ne 0 then begin     ;assumed is 
        em1_46 = 10^(em(0) -44)
        em2_46 = 10^(em(1) -44)
      endif
    ENDELSE
    
    If n_elements(unc_data) ne 0 then begin
      nunc_data = unc_d1 & nunc_data(*) = 0.    ;setup returned ave err
      norm_fac1 = sqrt(1./gt_expdur(idx1)/1000.)
      norm_fac2 = sqrt(1./gt_expdur(idx2)/1000.)
      nunc_data = fix(sqrt( (float(unc_d1 * norm_fac1))^2 + $
        (float(unc_d2 * norm_fac2))^2 ) )   ;normalized ave_unc_data
    ENDIF

    ret = dat1

    ret = ( dat1/(gt_expdur(idx1)/1000.) + $
        dat2/(gt_expdur(idx2)/1000.) )/2.0  ;per sec

    if n_elements(em) ne 0 then begin
      aver_em = (em1_46 + em2_46)/2.0
    endif

    return, ret
    end