pro bcs_clock, lun, strec, dp_clock_ref, bcs_clock_ref
;
;
;HISTORY:
;	Written Fall 1991
;	30-Sep-93 (MDM) - Modified so that the clock tie point is never used
;			  for a BCS clock value of 0 (avoid anomalous problem case
;			  of 24-Aug-93 23:00)
;
if (n_elements(bcs_clock_ref) ne 0) then begin
    ref_ds79 = bcs_clock_ref.ds79
    ref_msod = bcs_clock_ref.msod
    ref_bcs_clock = bcs_clock_ref.bcs
end else begin
    ref_ds79 = 0
    ref_msod = 0
    ref_bcs_clock = 0
end
;
bcs_clock_ref = {bcs_clock_rec, $
			ds79: fix(0),	$ 	;Reference day from DP clock
			msod: long(0),	$	;Reference time from DP clock
			bcs: long(0)}		;Reference time from BCS clock
;
rd_telem, lun, (strec-1)>0, rec1, err
dprate = mask(rec1(16+48, 15), 5, 3)   ;
last_dprates = [1,2,3,dprate]
irec = strec
qdone = 0
while (not qdone) do begin
    rd_telem, lun, irec, rec1, err
    fi = rec1(16+3, 0)
    dprate = mask(rec1(16+48, 15), 5, 3)   ;
    diff = total(abs(last_dprates - dprate))	;looking for dprate to be the same for the last 4 major frames
    ref_bcs_clock = rec1(16+66, 29)*long(256) + rec1(16+66, 28)
    if ((fi eq 0) and (diff eq 0) and (ref_bcs_clock ne 0)) then begin
	;Need to check dprate because of sync problems with FI during rate changes

	get1gen, rec1, dp_clock_ref, gen_index	;get DP clock time converted
	ref_msod = gen_index.time
	ref_ds79 = gen_index.day
	ref_bcs_clock = rec1(16+66, 29)*long(256) + rec1(16+66, 28)
	err_log, 'BCS_CLOCK', ref_bcs_clock, ref_ds79, ref_msod

	qdone = 1
    end

    last_dprates = [last_dprates(1:3), dprate]
    irec = irec + 1

    if (err eq 36) then begin
	err_log, 'STR', 'ERR/BCS: BCS_CLOCK got to end of file before finding any good data'
	print, 'BCS_CLOCK: Got to end of file before finding any good data'
	print, 'No update to BCS clock reference '

	qdone = 1
    end
end
;
bcs_clock_ref.ds79 = ref_ds79
bcs_clock_ref.msod = ref_msod
bcs_clock_ref.bcs  = ref_bcs_clock
;
end
