      SUBROUTINE BPLOT(X,Y,R,SCF,SCFZ,BN,BE,Z,HWT,ZWT)
      SAVE
      DIMENSION XV(7),YV(7),XSTD(2,7),YSTD(2,7)
      DATA XSTD/0.,0.,.866,0.,.866,.866,0.,-.866,-.866,-.866,-.866
     1  ,.866,0.,0./
      DATA YSTD/-1.,-1.,-.5,1.,.5,.5,1.,-.5,.5,.5,-.5,-.5,-1.,-1/
C  Change cut-off for plotting from 1.e-6 to 1.e-7
      IF (HWT.LT.1.E-7) GO TO 60
      B = (BN*Y - BE*X)/R
      A = (BN*X + BE*Y)/R
      XV(2) = X - SCF*B
      YV(2) = Y + SCF*A
      XV(1) = X + SCF*B
      YV(1) = Y - SCF*A
      IF (ZWT.GE.0.) GO TO 40
      IF (ZWT .LT. -1.5) THEN
C  Single field vectors
       CALL DASHDB(146314)
      ELSE
C  Significant error
      CALL DASHDB(162344)
      ENDIF
      CALL LINED(XV(1),YV(1),XV(2),YV(2))
      CALL DASHDB(177777)
      GO TO 50
   40 CALL CURVE(XV,YV,2)
   50 CONTINUE
C Create arrowheads
      XV(1) = XV(2) + .15*SCF*(A + B)
      YV(1) = YV(2) - .15*SCF*(A - B)
      XV(3) = XV(2) - .15*SCF*(A - B)
      YV(3) = YV(2) - .15*SCF*(A + B)
      CALL CURVE(XV,YV,3)
   60 CONTINUE
C  Change cut-off for plotting from 1.e-6 to 1.e-7
      IF (ZWT.LT.1.E-7) RETURN
      ISN = 1
      IF (Z.GE.0.) ISN = 2
      DO 80 I=1,7
C     XV(I) = X + SCFZ*Z*XSTD(ISN,I)/3.E0
C  80 YV(I) = Y + SCFZ*Z*YSTD(ISN,I)/3.E0
      XV(I) = X + SCFZ*Z*XSTD(ISN,I)*.5
   80 YV(I) = Y + SCFZ*Z*YSTD(ISN,I)*.5
      IF (ISN.EQ.1) THEN
C     CALL OPTN(2HCO,3H002)
       CALL CURVE(XV,YV,7)
      ELSE
C     CALL OPTN(2HCO,3H007)
       CALL CURVE(XV,YV,2)
       CALL CURVE(XV(3),YV(3),2)
       CALL CURVE(XV(5),YV(5),2)
      ENDIF
C     CALL OPTN(2HCO,3H001)
      RETURN
      END
