      SUBROUTINE GS3DET(GAMMA,GAMMA2,SCF,AMBIENT,TIME,BAD)
C
C OUTPUT DETAIL DATA FROM GS3 EDR PROCESSING.
C
C REVISED 05/26/95 SBK - NEW ROTATION MATRIX FORMAT FROM SEDR ROUTINES
C
      CHARACTER DATAID*4
      INTEGER*2 GS3TIME(6),TIME(6),DELTA(6),
     &          DATATYPE(2),WORD30(2),WORD32(2)
      REAL*4 HDR(32),TIMEPD
      REAL*4 GAMMA(3,800),GAMMA2(3,400),SCF(3,800),AMBIENT(3,800),
     &       PRIDAT(3,800),SECDAT(3,400),SCFDAT(3,800),AMBDAT(3,800)
      REAL*4 SPV(6),RANGE,ANG(2),
     &       MTB(3,3),MTB5(3,3),MHG(3,3)
      REAL*8 TD,TN,TP
C
      INCLUDE 'UNPACK.INC'
C
      EQUIVALENCE (SUMOUT(1),HDR(1)),    (DETOUT(1),HDR(1))
C
      EQUIVALENCE (HDR(1),DATAID),       (HDR(12),TIMEPD),
     &            (HDR(17),DATATYPE(1)), (HDR(30),WORD30(1)),
     &            (HDR(32),WORD32(1))
C
      DATA ICALL/0/, DELTA/5*0,60/, GS3TIME/6*0/
C
      RECWRITE = RECWRITE + 1
      ICALL = ICALL + 1
      IF ( SYS2(6).AND.ICALL.EQ.1 ) THEN
       OPEN(84,FILE='FOR084.DAT',STATUS='NEW',FORM='FORMATTED',
     &      CARRIAGECONTROL='LIST',RECL=106)
       OPEN(85,FILE='FOR085.DAT',STATUS='NEW',FORM='FORMATTED',
     &      CARRIAGECONTROL='LIST',RECL=106)
      END IF
C
      GS3TIME(1) = TIME(1)
      GS3TIME(2) = TIME(2)
      GS3TIME(3) = TIME(3)
      GS3TIME(4) = TIME(4)
      GS3TIME(5) = TIME(5)
      GS3TIME(6) = TIME(6)
C
      DATAID = 'LFM '
      TIMEPD = 48.0
      DATATYPE(1) = 1
      WORD32(1) = RECWRITE
C
      IF ( SYS2(4) ) THEN
C
C OUTPUT PRIMARY AND SECONDARY DETAIL FIELD
C
       WORD30(1) = 800
       WORD30(2) = 400
       WORD32(2) = 3600
C
      ELSE IF ( SYS2(5) ) THEN
C
C OUTPUT AMBIENT AND SPACECRAFT DETAIL FIELD
C
       WORD30(1) = 800
       WORD30(2) = 800
       WORD32(2) = 4800
C
      END IF
C
C REASSIGN DETAIL VALUES TO LOCAL VARIABLES
C
      DO I = 1,800
C
       IF ( SYS2(7) ) 
     &  CALL GETSEDR(GS3TIME,TD,TN,TP,SPV,RANGE,ANG,MTB,MTB5,MHG)
C
C SECONDARY MAG SAMPLE COUNTER (1-2)
C
       ISEC = (I-1)/2 + 1
C
       IF ( SYS2(4) ) THEN
C
C GET PRIMARY VALUES
C
        IF ( SYS2(7) ) THEN
         CALL ROTATE1(PRIDAT(1,I),GAMMA(1,I),MHG,BAD)
        ELSE
         PRIDAT(1,I) = GAMMA(1,I)
         PRIDAT(2,I) = GAMMA(2,I)
         PRIDAT(3,I) = GAMMA(3,I)
        END IF
C
C OUTPUT PRIMARY FIELD X,Y,Z
C
        DETOUT(32+I) = PRIDAT(1,I)
        DETOUT(32+800+I) = PRIDAT(2,I)
        DETOUT(32+1600+I) = PRIDAT(3,I)
C
C GET SECONDARY VALUES
C
        IF ( MOD(I-1,2).EQ.0 ) THEN
         IF ( SYS2(7) ) THEN
          CALL ROTATE1(SECDAT(1,ISEC),GAMMA2(1,ISEC),MHG,BAD)
         ELSE
          SECDAT(1,ISEC) = GAMMA2(1,ISEC)
          SECDAT(2,ISEC) = GAMMA2(2,ISEC)
          SECDAT(3,ISEC) = GAMMA2(3,ISEC)
         END IF
C
C OUTPUT SECONDARY FIELD X,Y,Z
C
         DETOUT(32+2400+ISEC) = SECDAT(1,ISEC)
         DETOUT(32+2400+400+ISEC) = SECDAT(2,ISEC)
         DETOUT(32+2400+800+ISEC) = SECDAT(3,ISEC)
        END IF
C
C OUTPUT 800 PRIMARY SAMPLES AND 400 SECONDARY SAMPLES
C
        IF ( SYS2(6) ) THEN
         WRITE(84,800) GS3TIME,RANGE,ANG(2),ANG(1),
     &                 (PRIDAT(J,I),J=1,3),(GAMMA(J,I),J=1,3)
         IF ( MOD(I-1,2).EQ.0 ) 
     &    WRITE(85,800) GS3TIME,RANGE,ANG(2),ANG(1),
     &                  (SECDAT(J,ISEC),J=1,3),(GAMMA2(J,ISEC),J=1,3)
        END IF
C
       ELSE IF ( SYS2(5) ) THEN
C
C GET AMBIENT FIELD VALUES
C
        IF ( SYS2(7) ) THEN
         CALL ROTATE1(AMBDAT(1,I),AMBIENT(1,I),MHG,BAD)
        ELSE 
         AMBDAT(1,I) = AMBIENT(1,I)
         AMBDAT(2,I) = AMBIENT(2,I)
         AMBDAT(3,I) = AMBIENT(3,I)
        END IF
C
C GET SPACECRAFT FIELD VALUES
C
        IF ( SYS2(7) ) THEN
         CALL ROTATE1(SCFDAT(1,I),SCF(1,I),MHG,BAD)
        ELSE
         SCFDAT(1,I) = SCF(1,I)
         SCFDAT(2,I) = SCF(2,I)
         SCFDAT(3,I) = SCF(3,I)
        END IF
C
C OUTPUT AMBIENT FIELD X,Y,Z 
C
        DETOUT(32+I) = AMBDAT(1,I)
        DETOUT(32+800+I) = AMBDAT(2,I)
        DETOUT(32+1600+I) = AMBDAT(3,I)
C
C OUTPUT SPACECRAFT FIELD X,Y,Z
C
        DETOUT(32+2400+I) = SCFDAT(1,I)
        DETOUT(32+3200+I) = SCFDAT(2,I)
        DETOUT(32+4000+I) = SCFDAT(3,I)
C
C OUTPUT 800 AMBIENT SAMPLES AND 800 SPACECRAFT FIELD SAMPLES
C
        IF ( SYS2(6) ) THEN
         WRITE(84,800) GS3TIME,RANGE,ANG(2),ANG(1),
     &                 (AMBDAT(J,I),J=1,3),(AMBIENT(J,I),J=1,3)
         WRITE(85,800) GS3TIME,RANGE,ANG(2),ANG(1),
     &                 (SCFDAT(J,I),J=1,3),(SCF(J,I),J=1,3)
        END IF
C
       END IF
C       
       CALL INC_TIME(GS3TIME,DELTA)
C
      END DO
C
C OUTPUT DETAIL DATA
C
      IF ( SYS2(4).AND..NOT.SYS2(5) ) THEN
       LEN = 3632
      ELSE IF ( SYS2(5).AND..NOT.SYS2(4) ) THEN
       LEN = 4832
      ELSE 
       WRITE(68,*)
       WRITE(68,*) 
     &  '*GS3DET*  ENTRY INTO DETAIL OUTPUT ROUTINE WITH BAD FLAGS'
       LEN = 0
       STOP
      END IF
      WRITE(66) (DETOUT(I),I=1,LEN)
C
      RETURN
  800 FORMAT(I2,1X,I3.3,3(1X,I2.2),1X,I3.3,1X,F8.4,2(1X,F8.3),
     &       6(1X,F9.3))
      END
