SUBROUTINE SPOTWT(KFILDO,KFILOG,IP16,
     1                  CCALL,XP,YP,LNDSEA,NOPTN,LTAG,LTAGPT,NSTA,
     2                  ID,IDPARS,DIST,WT,MESH,NX,NY,
     3                  SEALND,NXE,NYE,MESHE,
     4                  IPACK,DATA,IWORK,ND5,
     5                  MODNO,NDATE,
     6                  ALATL,ALONL,NPROJ,ORIENT,XLAT,ISCALD,
     7                  DPOWER,MAXDST,
     8                  IS0,IS1,IS2,IS4,ND7,
     9                  JTOTBY,JTOTRC,PLAINT,IPLANT,
     A                  L3264B,L3264W,MINPK,ISTOP,IER)
C
C        JUNE      2011   GLAHN   MDL   MOS-2000
C                                 ADAPTED FGBS SPOTWT
C        JULY      2011   GLAHN   ADDED LTAGBS 
C        JULY      2011   GLAHN   ADDED "1" TO WORD 2 IN THE "B"
C                                 POSITION OF THE ID FOR WRITING
C                                 TO KFILOG
C        JULY      2011   GLAHN   REMOVED JFIRST
C        JULY      2011   GLAHN   REMOVED OPEN MP
C        AUGUST    2011   GLAHN   CHANGED LTAGBS( ) TO LTAGPT( )
C        SEPTEMBER 2016   GLAHN   CHANGED ND5 TO NX*NY IN CALL TO PAWGTS
C
C        PURPOSE
C            TO CALCULATE THE WEIGHTS AND DISTANCES FOR A WATER
C            SMOOTHER.  THE WEIGHTS AND DISTANCES ARE CALCULATED
C            SIMILAR TO SPOTRM.  HOWEVER, HERE THE BOGUS VALUES
C            ARE NOT INCLUDED IN THE DISTANCE CALCULATIONS.  THAT
C            IS, SPOTRM USES ALL STATIONS WITH DATA TO CALCULATE
C            THE DISTANCES (DEPENDING ON THE NOCEAN/LAKE VALUES
C            IN U405A.CN), WHILE THIS SPOTWT DOES NOT USE BOGUS
C            VALUES.  THE BOGUS VALUES AFFECT THE ANALYSIS, BUT
C            THE EXACT VALUES ARE NOT RETAINED LIKE THEY ARE FOR
C            REAL (BUOY) VALUES.  TO DIFFERENTIATE THIS DISTANCE
C            GRID WHEN WRITTEN TO THE DISPOSABLE  (KFILOG) FILE,
C            A "1" IS ADDED TO WORD 2 OF THE ID.  SPOTWT IS CALLED
C            BY ORSMTW, WHICH IS AN ADAPTION TO ORSMTH.
C
C            NOTE THAT OCEAN AND INLAND WATER ARE TREATED SEPARATELY.
C            THERE IS NO MIX.  IT MAY BE DESIRABLE TO DO THIS.
C
C            IF SPOTWT IS ENTERED MORE THAN ONCE FOR THE SAME DATE
C            AND VARIABLE, WT( , ) AND DIST( , ) DO NOT HAVE TO BE
C            RECALCULATED.  HOWEVER, THIS PART OF THE PROCESS IS NOT
C            WHAT TAKES THE HEAVY CP TIME.  ALSO, IT WOULD BE BE
C            UNUSUAL TO DO THIS.
C
C        DATA SET USE
C            KFILDO    - UNIT NUMBER FOR OUTPUT (PRINT) FILE.  (OUTPUT)
C            KFILOG    - UNIT NUMBER FOR DISPOSABLE TDLPACK GRIDPOINT
C                        OUTPUT.  (OUTPUT)
C            KFILRA(J) - HOLDS THE UNIT NUMBERS FOR ACCESSING THE
C                        MOS-2000 EXTERNAL RANDOM ACCESS FILES (J=1,6).
C                        (INPUT)
C            IP16      - UNIT NUMBER FOR INDICATING WHEN A RECORD IS
C                        WRITTEN TO THE SEQUENTIAL FILE.  (OUTPUT)
C
C        VARIABLES
C              KFILDO = UNIT NUMBER FOR OUTPUT (PRINT) FILE.  (INPUT)
C              KFILOG = UNIT NUMBER FOR DISPOSABLE TDLPACK GRIDPOINT
C                       OUTPUT.  THIS IS FOR DIFFERENT PASSES OF THE
C                       ANALYSES AND THEIR SMOOTHINGS.  USED HERE
C                       FOR DISTANCE MAP.  (INPUT)
C                IP16 = INDICATES WHETHER (>0) OR NOT (=0) 
C                       A STATEMENT WILL BE OUTPUT TO IP(16)
C                       WHEN A SEQUENTIAL FILE IS WRITTEN THROUGH
C                       PAWGTS.  (INPUT))
C            CCALL(J) = STATION CALL LETTERS (J=1,NSTA).  (CHARACTER*8)
C                       (INPUT)
C               XP(K) = THE X POSITION FOR STATION K (K=1,NSTA) ON 
C                       THE ANALYSIS GRID AREA AT THE CURRENT GRID MESH 
C                       LENGTH MESH.  (INPUT)
C               YP(K) = THE Y POSITION FOR STATION K (K=1,NSTA) ON 
C                       THE ANALYSIS GRID AREA AT THE CURRENT GRID MESH 
C                       LENGTH MESH.  (INPUT)
C           LNDSEA(K) = LAND/SEA INFLUENCE FLAG FOR EACH STATION
C                       (K=1,ND1).
C                       0 = WILL BE USED FOR ONLY OCEAN WATER (=0)
C                           GRIDPOINTS.
C                       3 = WILL BE USED FOR ONLY INLAND WATER (=3)
C                           GRIDPOINTS.
C                       6 = WILL BE USED FOR BOTH INLAND WATER (=3)
C                           AND LAND (=9) GRIDPOINTS.
C                       9 = WILL BE USED FOR ONLY LAND (=9) GRIDPOINTS.
C                       (INPUT)
C               NOPTN = INCICATES OPTION FOR WHICH DATA TO SMOOTH OUT.
C                       COMES FROM U405A.CN IN CALL TO SPOTRM CONST( ).
C                       1 = SMOOTH OUT BOGUS ONLY
C                       2 = SMOOHT OUT BOGUS AND 2ND LEVE AUGMENTATION.
C                       3 = SMOOTH OUT BOGUS AND ALL AUGMENTATION
C                       4 = KEEP ALL.
C                       (INPUT)
C             LTAG(K) = DENOTES USE OF DATA CORRESPONDING TO CCALL(K)
C                       (K=1,NSTA).
C                       +4 = TOSSED IN A PREVIOUS OBS RUN AND 
C                            MAINTAINED DOWNSTREAM.
C                       +3 = TOSSED IN A PREVIOUS LAMP RUN, AND
C                            MAINTAINED DOWNSTREAM.
C                       +2 = STATION LOCATION UNKNOWN.  NOT USED FOR ANY
C                            PURPOSE.
C                       +1 = STATION OUTSIDE RADIUS OF INFLUENCE FOR
C                            AREA BEING ANALYZED OR MISSING DATUM.
C                            PERMANENTLY DISCARDED.
C                        0 = USE ON CURRENT PASS THROUGH DATA IN BCD.
C                       -1 = ON RETURN FROM BCD, THE DATUM WAS NOT 
C                            USED ON THE LAST PASS.
C                       -3 = ACCEPT THIS STATION ON EVERY PASS IN BCD.
C                            (NOT IMPLEMENTED IN U405A)
C                       (INPUT)
C           LTAGPT(K) = FOR STATION K (K=1NSTA),
C                       1 = AUGMETNED DATA (FIRST PASS)
C                       2 = AUGMENTED DATA (2ND PASS)
C                       3 = BOGUS DATA
C                       0 = EVERYTHING ELSE
C                       (INPUT)
C                NSTA = NUMBER OF STATIONS IN CCALL( ).  (INPUT)
C               ID(J) = 4 WORD ID OF VARIABLE BEING ANALYZED.  (INPUT)
C           IDPARS(J) = THE PARSED, INDIVIDUAL COMPONENTS OF THE
C                       PREDICTOR ID'S CORRESPONDING TO ID( ,N)
C                       (J=1,15), (N=1,ND4).
C                       J=1--CCC (CLASS OF VARIABLE),
C                       J=2--FFF (SUBCLASS OF VARIABLE),
C                       J=3--B (BINARY INDICATOR),
C                       J=4--DD (DATA SOURCE, MODEL NUMBER),
C                       J=5--V (VERTICAL APPLICATION),
C                       J=6--LBLBLBLB (BOTTOM OF LAYER, 0 IF ONLY 
C                            1 LAYER),
C                       J=7--LTLTLTLT (TOP OF LAYER),
C                       J=8--T (TRANSFORMATION),
C                       J=9--RR (RUN TIME OFFSET, ALWAYS + AND BACK 
C                            IN TIME),
C                       J=10--OT (TIME APPLICATION),
C                       J=11--OH (TIME PERIOD IN HOURS),
C                       J=12--TAU (PROJECTION IN HOURS),
C                       J=13--I (INTERPOLATION TYPE),
C                       J=14--S (SMOOTHING INDICATOR), AND
C                       J=15--G (GRID INDICATOR).
C                       (INPUT)
C         DIST(IX,JY) = THE FIELD OF DISTANCES TO THE NEAREST
C                       GRIDPOINT (IX=1,NX) (JY=1,NY).
C                       (OUTPUT)
C           WT(IX,JY) = WEIGHTS FOR SMOOTHING (IX=1,NS) (JY=1,NY).
C                       (OUTPUT)
C                MESH = NOMINAL MESH LENGTH OF GRID IN P( , ).
C                       (INPUT)
C                  NX = SIZE OF P( , ) IN X DIRECTION.  (INPUT)
C                  NY = SIZE OF P( , ) IN Y DIRECTION.  (INPUT)
C       SEALND(IX,JY) = THE LAND/SEA MASK (IX=1,NX) (JY=1,NY). 
C                       0 = OCEAN WATER GRIDPOINTS;
C                       3 = INLAND WATER GRIDPOINTS.
C                       9 = LAND GRIDPOINTS.
C                       (INPUT)
C                 NXE = X-EXTENT OF SEALND( , ) AT MESH LENGTH MESHE.
C                       (INPUT)
C                 NYE = Y-EXTENT OF SEALND( , ) AT MESH LENGTH MESHE.
C                       (INPUT)
C               MESHE = NOMINAL MESH LENGTH OF GRID IN SEALND( , ).
C                       (INPUT)
C            IPACK(J) = WORK ARRAY (J=1,ND5).  (INTERNAL)
C             DATA(J) = WORK ARRAY (J=1,ND5).  (INTERNAL)
C            IWORK(J) = WORK ARRAY (J=1,ND5).  (INTERNAL)
C                 ND5 = DIMENSION OF IPACK( ), IWORK( ), AND DATA( ).
C                       (INPUT)
C               MODNO = OUTPUT MODEL NUMBER.  (INPUT)
C               NDATE = DATE/TIME, YYYYMMDDHH.  THIS IS THE ANALYSIS
C                       RUN TIME, INCLUDING HH.  (INPUT)
C               ALATL = NORTH LATITUDE OF LOWER LEFT CORNER POINT
C                       OF A GRID OF THE SIZE  NXL, NYL.  TRUNCATED
C                       TO TEN THOUSANDTHS OF DEGREES.  NOTE THAT THE
C                       MOS-2000 ARCHIVE IS ONLY TO THOUSANDTHS OF
C                       DEGREES.  (INPUT)
C               ALONL = WEST LONGITUDE OF LOWER LEFT CORNER POINT
C                       OF A  GRID OF THE SIZE  NXL, NYL.  TRUNCATED
C                       TO TEN THOUSANDTHS OF DEGREES.  NOTE THAT THE
C                       MOS-2000 ARCHIVE IS ONLY TO THOUSANDTHS OF
C                       DEGREES.  (INPUT)
C               NPROJ = NUMBER OF MAP PROJECTION TO WHICH THIS GRID
C                       APPLIES.
C                       3 = LAMBERT.
C                       5 = POLAR STEREOGRAPHIC.
C                       7 = MERCATOR.
C                       (INPUT)
C              ORIENT = ORIENTATION OF GRID IN WEST LONGITUDE.  (INPUT)
C                XLAT = NORTH LATITUDE AT WHICH GRIDLENGTH IS SPECIFIED
C                       IN DEGREES.  (INPUT)
C              ISCALD = DECIMAL SCALING FOR TDLPACKING.  (INPUT)
C              DPOWER = THE POWER OF THE DISTANCE TO USE IN WEIGHTING.
C                       WT(IX,JY)=1/DIST(IX,JY)**POWER.  (INPUT)
C              MAXDST = MAXIMUM DISTANCE TO SEARCH FOR CLOSEST GRIDPOINT.
C                       GRIDPOINTS OUTSIDE THIS RANGE WILL BE GIVEN THE
C                       VALUE MAXDST. TAKEN FROM THE U405A.CN FILE.
C                       (INPUT)
C              IS0(J) = MOS-2000 GRIB SECTION 0 ID'S (J=1,4).
C                       (INTERNAL)
C              IS1(J) = MOS-2000 GRIB SECTION 1 ID'S (J=1,21+).
C                       (INTERNAL)
C              IS2(J) = MOS-2000 GRIB SECTION 2 ID'S (J=1,12).
C                       (INTERNAL)
C              IS4(J) = MOS-2000 GRIB SECTION 4 ID'S (J=1,4).
C                       (INTERNAL)
C                 ND7 = DIMENSION OF IS0( ), IS1( ), IS2( ), AND
C                       IS4( ).  (INPUT)
C              JTOTBY = THE TOTAL NUMBER OF BYTES ON THE FILE ASSOCIATED
C                       WITH UNIT NO. KFILOG.  (INPUT/OUTPUT)
C              JTOTRC = THE TOTAL NUMBER OF RECORDS IN THE FILE ON UNIT
C                       NUMBER KFILOG.  (INPUT/OUTPUT)
C              PLAINT = THE PLAIN LANGUAGE DESCRIPTION TO FURNISH TO
C                       GTHRES. EQUIVALENCED TO IPLANT IN CALLING
C                       ROUTINE.  (INPUT)
C         IPLANT(I,J) = EQUIVALENCED TO PLAINT IN CALLING ROUTINE
C                       (I=1,L3264W) (J=1,4).  (INPUT)
C              L3264B = INTEGER WORD LENGTH IN BITS OF MACHINE BEING
C                       USED (EITHER 32 OR 64).  (INPUT).
C              L3264W = NUMBER OF WORDS IN 64 BITS (EITHER 1 OR 2).
C                       (INPUT)
C               MINPK = MINIMUM GROUP SIZE WHEN PACKING THE DATA.
C                       (INPUT)
C               ISTOP = INCREMENTED BY 1 IF THERE IS AN ERROR.
C                       (INPUT/OUTPUT)
C                 IER = RETURN CODE.
C                         0 = GOOD RETURN.
C                       777 = ANY ERROR IS RETURNED WITH A 777, BUT
C                             CALLING PROGRAM WILL PROBABLY IGNORE IT.
C                       (OUTPUT)
C         ITABLE(J,L) = CORRESPONDENCE BETWEEN NOMINAL MESH LENGTH
C                       (L=1) AND VALUE FOR X IN 408CX0000 (L=2),
C                       (J=1,7).
C              IPRTEL = 1 TO WRITE THE RETRIEVED DISTANCE GRID TO THE
C                       OUTPUT FILE VIA GTHRES.  (INTERNAL)
C               ODIST = DISTANCE IN GRID UNITS OUTSIDE THE GRID A 
C                       STATION IS USED FOR THIS PURPOSE.  SET BY
C                       DATA STATEMENT TO 1.  (INTERNAL)
C        1         2         3         4         5         6         7 X
C
      CHARACTER*6 RACESS(6)
      CHARACTER*8 CCALL(NSTA)
      CHARACTER*32 PLAINT
C
      DIMENSION ID(4),LD(4),IDPARS(15)
      DIMENSION XP(NSTA),YP(NSTA),LNDSEA(NSTA),LTAG(NSTA),LTAGPT(NSTA)
      DIMENSION DIST(NX,NY),WT(NX,NY)
      DIMENSION SEALND(NXE,NYE)
      DIMENSION IPLANT(L3264W,4)
C        EQUIVALENCED TO PLAINT IN DRIVER.
      DIMENSION IPACK(ND5),IWORK(ND5),DATA(ND5)
      DIMENSION IS0(ND7),IS1(ND7),IS2(ND7),IS4(ND7)
      DIMENSION ITABLE(7,2),IDSAVE(4)
C
      SAVE IDSAVE,NDTSAV

      DATA ITABLE/80, 40, 20, 10, 5, 3, 1,
     1             0,  1,  2,  3, 4, 5, 6/
      DATA IPRTEL/1/
C        THIS WRITES THE CLOSEST INSTANCE GRID TO THE OUTPUT FILE
C        LFILOG.  AFTER CHECKOUT, THIS CAN GE CHANGED TO 0.
      DATA ODIST/1/
      DATA IDSAVE/4*0/
      DATA NDTSAV/0/
C
      CALL TIMPR(KFILDO,KFILDO,'START SPOTWT        ')
C
      IER=0
C
D     WRITE(KFILDO,100)DPOWER,MAXDST,NSTA
D100  FORMAT(/' AT 100 IN SPOTWT--DPOWER,MAXDST,NSTA',F8.2,2I6)
D     WRITE(KFILDO,1000)JTOTBY,JTOTRC,L3264B,L3264W,
D    1                  MINPK,ISCALD,ND7,ND5,KFILOG
D1000 FORMAT(/' AT 100 IN SPOTWT--JTOTBY,JTOTRC,L3264B,L3264W,',
D    1        'MINPK,ISCALD,ND7,ND5,KFILOG',9I8)
C
C        CHECK WHETHER THIS IS THE SAME ID AND DATA.  IF SO, THE
C        DISTANCE AND WEIGHT DO NOT HAVE TO BE COMPUTED.  THIS
C        LIMITS REUSE TO DIFFERENT PASSES OF THE SAME VARIABLE,
C        ALLOWING THAT DIFFERENT PROJECTIONS OR EVEN DIFFERENT
C        LEVELS OF PROBABILITY COULD HAVE DIFFERENT NUMBERS OF
C        STATIONS.
C
 101  DO 102 J=1,4
C
D     WRITE(KFILDO,1015)J,ID(J),IDSAVE(J)
D1015 FORMAT(' AT 1015 IN SPOTWT--J,ID(J),IDSAVE(J)',3I12)
C
      IF(ID(J).NE.IDSAVE(J))GO TO 104
 102  CONTINUE
C
C        THE ID IS THE SAME.  THIS IS AN ANALYSIS PASS AFTER THE
C        FIRST SMOOTHING, SO THE DISTANCE AND WEIGHTS DO NOT HAVE 
C        BE COMPUTED.  USUALLY THIS SMOOTHING IS DONE ONLY ONCE
C        PER VARIABLE/PASS/DATE, SO ITS REUSE IS RARE.
C
      IF(NDATE.NE.NDTSAV)GO TO 104
C        IF ONE VARIABLE WERE ANALYZED FOR MULTIPLE DATES, THE
C        ID( ) COULD MATCH, BUT THE DATE WOULD BE DIFFERENT.
C
      WRITE(KFILDO,103)(ID(J),J=1,4)
 103  FORMAT(/' SPOTWT BEING REPEATED FOR VARIABLE ',4I11)
C
      GO TO 400
C
C        THE DISTANCES AND WEIGHTS HAVE TO BE COMPUTED.
C        CHECK THE SIZE OF P( , ) AND SEALND( , ).
C
 104  IF(NX.NE.NXE.OR.NY.NE.NYE)THEN
         WRITE(KFILDO,105)NX,NY,NXE,NYE
 105     FORMAT(/' ****THE GRID P( , ) OF SIZE',I5,' X',I5,
     1           ' IS NOT THE SAME SIZE OF SEALND',I5,' X',I5,
     2           '.  SMOOTHING IN SPOTWT NOT DONE.  CONTINUING.')
         ISTOP=ISTOP+1
         IER=777
         GO TO 400
      ENDIF
C
C        CHECK THE MESH LENGTHS OF P( , ) AND SEALND( , ).
C
      IF(MESH.NE.MESHE)THEN
         WRITE(KFILDO,107)MESH,MESHE
 107     FORMAT(/' ****THE GRID P( , ) HAS A DIFFERENT NOMINAL',
     1           ' MESH LENGTH =',I3,' THAN SEALND( , ) =',I3,
     2           '.  SMOOTHING IN SPOTWT NOT DONE.  CONTINUING.')
         ISTOP=ISTOP+1
         IER=777
         GO TO 400
      ENDIF
C
C        SET THE DISTANCES TO A LARGE NUMBER.
C
      DO 139 JY=1,NY
      DO 138 IX=1,NX
      DIST(IX,JY)=99999999.
 138  CONTINUE
 139  CONTINUE
C
C        SQUARE MAXDST TO LIMIT THE SEARCH TO A CIRCLE.
C
      DMAXSQ=MAXDST*MAXDST
      DMAX=MAXDST
C
      DO 250 K=1,NSTA
C
C        SCREEN OUT LAND STATIONS.
C
      IF(LNDSEA(K).EQ.9)GO TO 250         
C
C        MAKE SURE STATION LOCATION IS PRESENT.
C
      IF(XP(K).GT.9998..OR.YP(K).GT.9998.)THEN
         WRITE(KFILDO,143)CCALL(K)
 143     FORMAT(/' ****THE LOCATION OF STATION ',A8,' MISSING.',
     1           ' IN SPOTWT.  STATION COULD NOT BE USED.')
         ISTOP=ISTOP+1
         IER=777
         GO TO 250
      ENDIF
C
C        CHECK FOR GOOD DATA AND EXERCISE NOPTN OPTIONS FOR
C        WHICH DATA TO SMOOTH OUT.  IF NOPTN WERE MISTAKENLY
C        0, LTAGPT( ) WOULD NOT LIMIT THE WEIGHTS.
C
      IF(LTAG(K).NE.0)GO TO 250
C        ONLY GOOD DATA USED ON LAST PASS ARE NOT SMOOTHED OUT.
      IF(NOPTN.EQ.1.AND.LTAGPT(K).EQ.3)GO TO 250
C        WHEN NOPTN = 1, BOGUS ARE SMOOTHED OUT; AUGMENTED NOT.
      IF(NOPTN.EQ.2.AND.LTAGPT(K).GE.2)GO TO 250
C        WHEN NOPTN = 2, BOGUS AND 2ND LEVEL AUGMENTED SMOOTHED OUT.
      IF(NOPTN.EQ.3.AND.LTAGPT(K).NE.0)GO TO 250
C        WHEN NOPTN = 3, BOGUS AND ALL AUGMENTED SMOOTHED OUT.
C
D     WRITE(KFILDO,145)K,XP(K),YP(K),ODIST,NX,NY
D145  FORMAT(' AT 145 IN SPOTWT--K,XP(K),YP(K),ODIST,NX,NY',
D    1       I6,3F8.2,2I5)
C
      IF(XP(K).LT.1.-ODIST.OR.XP(K).GT.NX+ODIST)GO TO 250
      IF(YP(K).LT.1.-ODIST.OR.YP(K).GT.NY+ODIST)GO TO 250
C        STATION HAS TO BE WITHIN ODIST OF GRID.  THIS VALUE SHOULD
C        AGREE WITH PARAMETERS USED IN U155, GENERALLY ONLY 1 OR 2
C        GRIDPOINTS.  AS LONG AS A LOW VALUE IS USED, IT WON'T BE
C        VERY SENSITIVE TO THE EXACT VALUE.
      IXK=NINT(XP(K))
      JYK=NINT(YP(K))
C
      IF(LNDSEA(K).EQ.0)THEN
C        THIS IS AN OCEAN STATION.
C
         DO 180 JY=MAX(1,JYK-MAXDST),MIN(NY,JYK+MAXDST)
         DO 179 IX=MAX(1,IXK-MAXDST),MIN(NX,IXK+MAXDST)
C           IN THE ABOVE, IF THE INITIAL VALUE IS GT THE TERMINAL
C           VALUE, IT WILL NOT BE EXECUTED.
C
         IF(SEALND(IX,JY).EQ.0.)THEN
            DISTSQ=(IX-XP(K))**2+(JY-YP(K))**2
C
            IF(DISTSQ.LE.DMAXSQ)THEN
C
               IF(DISTSQ.LT.DIST(IX,JY))THEN
                  DIST(IX,JY)=DISTSQ
               ENDIF
C
            ENDIF
C
         ENDIF
C
 179     CONTINUE
 180     CONTINUE
C
      ELSE 
C           THE LAND STATIONS HAVE ALREADY BEEN FILTERED OUT, SO
C           ALL THAT IS LEFT IS LAKE = 3 AND LAKE AND LAND = 6.
C           THESE ARE INCLUDED IN THE LAKE (INLAND WATER)
C           COMPUTATIONS.
C
         DO 200 JY=MAX(1,JYK-MAXDST),MIN(NY,JYK+MAXDST)
         DO 199 IX=MAX(1,IXK-MAXDST),MIN(NX,IXK+MAXDST)
C           IN THE ABOVE, IF THE INITIAL VALUE IS GT THE TERMINAL
C           VALUE, IT WILL NOT BE EXECUTED.
C
         IF(SEALND(IX,JY).LT.3.5)THEN
            DISTSQ=(IX-XP(K))**2+(JY-YP(K))**2
C
            IF(DISTSQ.LE.DMAXSQ)THEN
C
               IF(DISTSQ.LT.DIST(IX,JY))THEN
                  DIST(IX,JY)=DISTSQ
               ENDIF
C
            ENDIF
C
         ENDIF
C
 199     CONTINUE
 200     CONTINUE
C
      ENDIF
C         
 250  CONTINUE
C
C        FIND DISTANCE FROM SQUARE OF DISTANCE.
C
      DO 259 JY=1,NY
      DO 258 IX=1,NX
C
      IF(DIST(IX,JY).LT.99999998.9)THEN
         DIST(IX,JY)=SQRT(DIST(IX,JY))
      ELSE
         DIST(IX,JY)=DMAX
C           THIS WILL GIVE A DISTANCE FOR ALL GRIDPOINTS, EVEN
C           LAND.  THEY WON'T BE USED.
      ENDIF
C
 258  CONTINUE
 259  CONTINUE
C
      DO 270 JY=1,NY
      DO 269 IX=1,NX
C
      IF(DIST(IX,JY).GT.1..OR.DPOWER.GT..001)THEN
C            WHEN DPOWER = 0, THE WEIGHT IS ALWAYS UNITY,
C            AND THE POWER COMPUTATION CAN BE BYPASSED.
C
         WT(IX,JY)=1./(DIST(IX,JY)**DPOWER)
C           NOTE THAT DIST(IX,JY) CAN BE MISSING = 9999., WHICH
C           WILL MAKE THE WT( , ) ESSENTIALLY ZERO.
      ELSE
         WT(IX,JY)=1.
      ENDIF
C
 269  CONTINUE
 270  CONTINUE
C
C        SAVE THE DATE AND ID( ).
C
      NDTSAV=NDATE
C
      DO 312 J=1,4
      IDSAVE(J)=ID(J)
 312  CONTINUE
C
      IF(IPRTEL.EQ.0.OR.KFILOG.EQ.0)GO TO 400
C        IPRTEL SET TO 1 FOR CHECKOUT, THEN CAN BE CHANGED TO ZERO.
C
C        PREPARING TO WRITE THE DISTANCE GRID TO THE DISPOSABLE FILE.
C
C        DEFINE THE ID FOR THE DISTANCE GRID, WHICH DEPENDS ON MESH
C        LENGTH.  VARIABLE ID(1) IS USED IN WORD 2.  THIS ALLOWS A DISTANCE
C        GRID TO BE IN THE RA FILE FOR DIFFERENT SETS OF STATIONS.
C
      DO 319 J=1,7
C
      IF(MESHE.EQ.ITABLE(J,1))THEN
         LD(1)=408000000+NPROJ*100000+ITABLE(J,2)*10000
         LD(2)=ID(1)+100
C           THIS MAKES THE GRID SPECIFIC TO A VARIABLE  THE ONLY
C           PART OF THE ID( ) THAT IS NOT HERE IS WORD 2, WHICH IS
C           HARDLY EVER USED FOR SURFACE VARIABLES.  THE ADDITION OF
C           THE "1" IN THE "B" LOCATION IS TO DISTINGUISH THIS FROM
C           THE DISTANCE MAP COMPUTED IN SPOTRM AND WRITTEN.  THE 
         LD(3)=ID(3)
         LD(4)=ID(4)
D        WRITE(KFILDO,318)NDATE,(LD(JJJ),JJJ=1,4)
D318     FORMAT(' AT 318 IN U155--NDATE,,(LD(JJJ),JJJ=1,4)',5I11)
         GO TO 330
      ENDIF
C
 319  CONTINUE      
C
      WRITE(KFILDO,320)
 320  FORMAT(' ****COULD NOT FIND MESH VALUE IN TABLE AT 320',
     1       ' IN SPOTRM.  SMOOTHING DONE, BUT THE GRID NOT',
     2       ' WRITTEN TO THE DISPOSABLE FILE.')
      ISTOP=ISTOP+1
      IER=777
      GO TO 400
C
C        PACK AND WRITE TO THE DISPOSABLE FILE.
C
 330  ITAUM=0
      NSEQ=0
      NCHAR=32
C        32 CHARACTERS OF PLAIN LANGUAGE ARE PACKED.
      XMISSP=9999.
      XMISSS=0.
      PLAINT='NEAREST DISTANCE TO STATION-SWT '
C
C        THE DISTANCE GRID IS ON A CLIPPED GRID, SO THERE
C        WILL BE MISSING VALUES.  THE FIRST (CLOSEST) DISTANCE
C        IS WRITTEN.
C
CCCC      DO 333 JY=1,1
CCCC      WRITE(KFILDO,332)(DIST(IX,JY),IX=1,NX)
CCCC 332  FORMAT(/20F6.0/(20F6.0))
CCCC 333  CONTINUE
C
      CALL PAWGTS(KFILDO,KFILOG,'KFILOG',IP16,NDATE,
     1            LD,IDPARS(12),ITAUM,MODNO,NSEQ,ISCALD,
     2            NPROJ,ALATL,ALONL,ORIENT,MESH,XLAT,NX,NY,
     3            DIST,DATA,IWORK,IPACK,NX*NY,MINPK,
     4            IS0,IS1,IS2,IS4,ND7,
     5            IPLANT,PLAINT,NCHAR,
     6            XMISSP,XMISSS,LX,IOCTET,
     7            JTOTBY,JTOTRC,L3264B,L3264W,IER)
C        PAWGTS WRITES DIAGNOSTIC TO IP16.
C
      IF(IER.NE.0)THEN
         IER=777
         ISTOP=ISTOP+1
      ENDIF
C
      CALL TIMPR(KFILDO,KFILDO,'END   SPOTWT        ')
C
 400  RETURN
      END