      SUBROUTINE MERGEV( X, NX, Y, NY, Z, NZ )

C     Merge two vectors X, Y into Z (duplicates are removed)

      REAL X(*), Y(*), Z(*)

      IX = 1
      IY = 1
      IZ = 1

C     *** Loop to successively take values from vector X or Y ***

 1000 CONTINUE

         IF ( IY .GT. NY ) THEN 
C           --- No more in vector Y, take from X
            Z( IZ ) = X( IX )
            IX = IX + 1
            IZ = IZ + 1
         ELSE IF ( IX .GT. NX ) THEN
C           --- No more in vector X, take from Y
            Z( IZ ) = Y( IY )
            IY = IY + 1
            IZ = IZ + 1
         ELSE IF ( X( IX ) .LE. Y( IY ) ) THEN
C           --- Vector X has the next largest
            Z( IZ ) = X( IX )
            IX = IX + 1
            IZ = IZ + 1
         ELSE
C           --- Vector Y has the next largest
            Z( IZ ) = Y( IY )
            IZ = IZ + 1
            IY = IY + 1
         ENDIF

C        --- Check that we didn't just add a duplicate
         IF ( IZ .GT. 2 .AND. Z( IZ-1 ) .EQ. Z( IZ-2) ) THEN
            IZ = IZ - 1
         ENDIF

C        --- More in vector X or Y?
         IF ( IX .LE. NX .OR. IY .LE. NY ) GOTO 1000

      NZ = IZ - 1

      RETURN
      END
