      SUBROUTINE FLECHE(TAILL,USDIM,VAVA,VIVI,XX0,YY0,ITYP,EPS
     &                 ,XFMIN,XFMAX,YFMIN,YFMAX)
      DIMENSION VIVI(2),XB(4),YB(4)
C dimx=cos(0.4), dimy=fact*sin(0.4)
      PARAMETER (FACT = 0.7, FACT2 = 0.7
     &          ,DIMX = 0.9211, DIMY = 0.3894*FACT)
C
      IF (ABS(VIVI(1)).GT.EPS.OR.ABS(VIVI(2)).GT.EPS) THEN
        TAILL2 = TAILL*(.3 - .15*TAILL*USDIM*VAVA)
        IF (ITYP.LT.0) THEN
          X0 = XX0 - .5*TAILL*VIVI(1)
          Y0 = YY0 - .5*TAILL*VIVI(2)
          XB(2) = XX0 + .5*TAILL*VIVI(1)
          YB(2) = YY0 + .5*TAILL*VIVI(2)
          ITYP2 = -ITYP
        ELSE
          XB(2) = XX0 + TAILL*VIVI(1)
          YB(2) = YY0 + TAILL*VIVI(2)
          X0 = XX0
          Y0 = YY0
          ITYP2 = ITYP
        ENDIF
        XX02 = 2.*XX0
        YY02 = 2.*YY0
        XB(1) = XB(2) - TAILL2*(DIMX*VIVI(1) - DIMY*VIVI(2))
        YB(1) = YB(2) - TAILL2*(DIMY*VIVI(1) + DIMX*VIVI(2))
        XB(3) = XB(2) - TAILL2*(DIMX*VIVI(1) + DIMY*VIVI(2))
        YB(3) = YB(2) + TAILL2*(DIMY*VIVI(1) - DIMX*VIVI(2))
        CALL GSMOVE(X0,Y0)
        CALL GSLINE(XB(2),YB(2))
        XFMIN = MIN(XFMIN,X0,XB(2))
        XFMAX = MAX(XFMAX,X0,XB(2))
        YFMIN = MIN(YFMIN,Y0,YB(2))
        YFMAX = MAX(YFMAX,Y0,YB(2))
        IF (ITYP2.EQ.2) THEN
          CALL GSLINE(XB(1),YB(1))
          CALL GSMOVE(XB(2),YB(2))
          CALL GSLINE(XB(3),YB(3))
          IF (ITYP.LT.0) THEN
            XB(1) = XX02 - XB(1)
            YB(1) = YY02 - YB(1)
            XB(3) = XX02 - XB(3)
            YB(3) = YY02 - YB(3)
            CALL GSMOVE(XB(1),YB(1))
            CALL GSLINE(X0,Y0)
            CALL GSLINE(XB(3),YB(3))
          ENDIF
        ELSEIF(ITYP2.EQ.3) THEN
          CALL MY_GSAREA(0,XB,YB,3)
          IF (ITYP.LT.0) THEN
            XB(1) = XX02 - XB(1)
            YB(1) = YY02 - YB(1)
            XB(2) = X0
            YB(2) = Y0
            XB(3) = XX02 - XB(3)
            YB(3) = YY02 - YB(3)
            CALL MY_GSAREA(0,XB,YB,3)
          ENDIF
        ELSEIF(ITYP2.EQ.4) THEN
          XB(4) = XB(2) - FACT2*TAILL2*VIVI(1)
          YB(4) = YB(2) - FACT2*TAILL2*VIVI(2)
          CALL MY_GSAREA(0,XB,YB,4)
          IF (ITYP.LT.0) THEN
            XB(1) = XX02 - XB(1)
            YB(1) = YY02 - YB(1)
            XB(2) = X0
            YB(2) = Y0
            XB(3) = XX02 - XB(3)
            YB(3) = YY02 - YB(3)
            XB(4) = XX02 - XB(4)
            YB(4) = YY02 - YB(4)
            CALL MY_GSAREA(0,XB,YB,4)
          ENDIF
        ENDIF
      ENDIF
      END
