      SUBROUTINE PUTNATR3(NF,TRACNAP,LON1,ILAT,IJPAK,ILEV,LH,KOUNT,LSTR,
     1                    KHEM,NTRAC,ITRNAM,ITRLVS,ITRLVF,
     2                    INDXNA,NTRACN,GLL,WRKS) 
C
C     * JAN 05/04 - M.LAZARE.   MODIFIED FOR REVISED MODEL STRUCTURE
C     *                         FOLLOWING IBM CONVERSION.
C     * OCT 29/02 - J.SCINOCCA. PREVIOUS VERSION PUTNATR.
C  
C     * SAVE TRACER FIELD ONTO MODEL GRID HISTORY FILE, 
C     * IF NTRACN.NE.0 (WHEN SPECTRAL MODEL OPTION SELECTED).
C
      IMPLICIT REAL (A-H,O-Z),
     +INTEGER (I-N) 
C 
      REAL TRACNAP(IJPAK,ILEV,NTRACN)
      REAL GLL(*)
      REAL WRKS(1)
      INTEGER LH(ILEV)
      INTEGER ITRNAM(NTRAC),ITRLVS(NTRAC),ITRLVF(NTRAC)
      INTEGER INDXNA(NTRACN)
      LOGICAL LSTR

      COMMON /KEEPTIM/ IYEAR,IMDH,MYRSSTI,ISAVDTS
C-------------------------------------------------------------------------
      IF(NTRACN.EQ.0 .OR. .NOT.LSTR) RETURN
C
C     * DETERMINE PROPER IBUF(2) TO USE FOR SAVED FIELDS, BASED ON
C     * VALUE OF OPTION SWITCH "ISAVDTS".
C
      IF(ISAVDTS.NE.0)                   THEN
C        * IN 32-BIT, THIS ONLY WORKS UNTIL IYEAR=2147!
         IBUF2=1000000*IYEAR + IMDH
      ELSE
         IBUF2=KOUNT
      ENDIF
      NPGG=0
C
      DO 300 NN=1,NTRACN
         N=INDXNA(NN)
         IBUF3=ITRNAM(N)
         DO 200 L=itrlvs(n),itrlvf(n)
           CALL PUTGGB3(TRACNAP(1,L,NN),LON1,ILAT,KHEM,NPGG,IBUF2,NF,
     1                  IBUF3,LH(L),GLL,WRKS)
  200    CONTINUE
  300 CONTINUE
C-----------------------------------------------------------------------
      RETURN
      END 
