pro ext1bcs, rec1, gen_index, qBCSout, bcs_dp_sync, nbcs_dp_sync, bcs_mf_buff, qbcs_rate_fix, bcs_rate_subs
;
;
;
;	qBCSout				;TRUE if BCS-OUT mode
;HISTORY:
;	16-Nov-91 (MDM) - Added the Quiet/Medium rate fix capability
;
;	----------------------------------------
;
fi = fix(rec1(16+3,0))/64			;0,1,2, or 3
;
if (nBCS_DP_Sync ge n_elements(BCS_DP_Sync)) then begin
    bcs_struct, bcs_dp_sync=bcs_dp_sync0
    if (nBCS_DP_Sync eq 0) then BCS_DP_Sync = replicate(BCS_DP_Sync0, 100) $
			else BCS_DP_Sync = [BCS_DP_Sync, replicate(BCS_DP_Sync0, 100)]
end
;
BCS_DP_Sync(nBCS_DP_Sync).time		= gen_index.time
BCS_DP_Sync(nBCS_DP_Sync).day		= gen_index.day
BCS_DP_Sync(nBCS_DP_Sync).dp_time	= gen_index.dp_time
BCS_DP_Sync(nBCS_DP_Sync).dp_rate	= gen_index.dp_rate
BCS_DP_Sync(nBCS_DP_Sync).dp_mode	= gen_index.dp_mode
BCS_DP_Sync(nBCS_DP_Sync).flare_control	= gen_index.flare_control
BCS_DP_Sync(nBCS_DP_Sync).flare_Status	= gen_index.flare_status
BCS_DP_Sync(nBCS_DP_Sync).RBM_Status	= gen_index.RBM_Status
BCS_DP_Sync(nBCS_DP_Sync).Telemetry_mode= gen_index.Telemetry_mode
BCS_DP_Sync(nBCS_DP_Sync).cal_status	= gen_index.cal_status
;
ss = [indgen(4)*6, indgen(4)*6+32]
BCS_DP_Sync(nBCS_DP_Sync).all_cnts	= rec1(16+66,ss+0+1)*long(256) + rec1(16+66, ss+0)
BCS_DP_Sync(nBCS_DP_Sync).Lim_cnts	= rec1(16+66,ss+2+1)*long(256) + rec1(16+66, ss+2)
BCS_DP_Sync(nBCS_DP_Sync).Acc_cnts	= rec1(16+66,ss+4+1)*long(256) + rec1(16+66, ss+4)
;
ss = [indgen(4)+24, indgen(4)+24+32]
BCS_DP_Sync(nBCS_DP_Sync).pha_counts	= rec1(16+66, ss)
ss = indgen(2)*32+18
BCS_DP_Sync(nBCS_DP_Sync).pha_control	= rec1(16+49, ss)
;
ss = indgen(2)*32
BCS_DP_Sync(nBCS_DP_Sync).specStatus	= rec1(16+112, ss+3)
BCS_DP_Sync(nBCS_DP_Sync).CommandStat	= rec1(16+112, ss+4)		;Added 16-Nov-91
;
ss = [indgen(4)+28, indgen(4)+28+32]
BCS_DP_Sync(nBCS_DP_Sync).cpu		= rec1(16+66, ss)
;
if ((fi mod 2) eq 0) then begin					;only even MF#'s
    BCS_DP_Sync(nBCS_DP_Sync).HV_mon	= rec1(16+32, 32:33)
end else begin							;odd MF#'s
    BCS_DP_Sync(nBCS_DP_Sync).crytemp	= rec1(16+32, 31:32)
    BCS_DP_Sync(nBCS_DP_Sync).elec_temp	= rec1(16+32, 33)
end

if (qBCSout) then begin
    istcol = 8
    iencol = 15
end else begin
    istcol = 5
    iencol = 5
end

mat = rec1(16:*, *)		;drop first 16 bytes of each minor frame
mat = byte(mat,0, 16,8,64)	;16x8 by 64 minor frames
mat = mat(istcol:iencol, *, *)	;should be 512 or 4096 per MF

bcs_mf_buff = byte(mat,0, n_elements(mat))	;turn into 1-D array

nBCS_DP_Sync = nBCS_DP_Sync + 1

if (qbcs_rate_fix and (not qBCSout)) then begin
    bcs_mf_buff(0:231) = bcs_mf_buff( bcs_rate_subs )
    bcs_mf_buff(232:255) = 0				;zero out old
    bcs_mf_buff(256:487) = bcs_mf_buff( bcs_rate_subs + 256 )
    bcs_mf_buff(488:511) = 0
    err_log, 'STR', 'INF/BCS: Performing QUIET/MEDIUM fix to the data
    ;print, 'INF/BCS: Performing QUIET/MEDIUM fix to the data
end

end
