FUNCTION Accum_counts, data, ss_start, ss_end
;Ok, deal with the data
  sizd = size(data)
  sd0 = sizd[0]
  IF(sd0 GT 3 OR sd0 EQ 0) THEN BEGIN
    message, /info, 'BAD ARRAY SIZE'
    RETURN, data
  ENDIF
  ndset = sizd[sizd[0]]         ;number of intervals
  nds1 = ndset-1
;deal with each interval ...
  n_intv = N_ELEMENTS(ss_start)
  IF(N_ELEMENTS(ss_end) NE n_intv) THEN BEGIN
    message, /info, 'BAD SIZE FOR SS_END, USING THE END OF THE DATA SET'
    ss_end = replicate(nds1, n_intv)
  ENDIF
  ss_st = ss_start > 0
  ss_st = ss_start < nds1
  ss_en = ss_end > 0
  ss_en = ss_end < nds1
  IF(sd0 EQ 1) THEN BEGIN
    data = reform(data, 1, ndset, /overwrite)
    sd01 = 2
    cnts = replicate(data[0], 1, n_intv)
  ENDIF ELSE IF(sd0 EQ 2) THEN BEGIN
    sd01 = sd0
    cnts = data[*, 0:n_intv-1]
  ENDIF ELSE BEGIN
    sd01 = sd0
    cnts = data[*, *, 0:n_intv-1]
  ENDELSE
  cnts[*] = 0
  IF(ndset GT 1) THEN BEGIN
    FOR j = 0, n_intv-1 DO BEGIN
      IF(ss_en[j] GT ss_st[j]) THEN BEGIN
        cnts[*, j] = total(data[*, ss_st[j]:ss_en[j]], sd01)
      ENDIF ELSE cnts[*, j] = data[*, ss_st[j]]
    ENDFOR
  ENDIF ELSE cnts = data
;If there is only one element, make it a scalar...
  IF(N_ELEMENTS(cnts) EQ 1) THEN cnts = cnts[0]
  RETURN, cnts
END