!      SUBROUTINE SINT(XF,N,M,N1STAR,N1END,N2STAR,N2END)                 


      SUBROUTINE SINT(XF,                    & 2
                   ims, ime, jms, jme,   &
                   its, ite, jts, jte, nf )
      IMPLICIT NONE
      INTEGER ims, ime, jms, jme, &
              its, ite, jts, jte

      INTEGER nf, ior
      REAL    one12, one24, ep
      PARAMETER(one12=1./12.,one24=1./24.)                              
      PARAMETER(ior=2)                        
!                                                                       
      REAL XF(ims:ime,jms:jme,NF)
!                                                                       
      REAL Y(ims:ime,jms:jme,-IOR:IOR),    &
           Z(ims:ime,jms:jme,-IOR:IOR),    &
           F(ims:ime,jms:jme,0:1)                                       
!
      INTEGER I,J,II,JJ,IIM
      INTEGER N2STAR, N2END, N1STAR, N1END
!                                                                       
      DATA  EP/ 1.E-10/                                                 
!                                                                       
!      PARAMETER(NONOS=1)                                                
!      PARAMETER(N1OS=N1*NONOS+1-NONOS,N2OS=N2*NONOS+1-NONOS)            
!                                                                       
      REAL W(ims:ime,jms:jme),OV(ims:ime,jms:jme),UN(ims:ime,jms:jme)                     
      REAL MXM(ims:ime,jms:jme),MN(ims:ime,jms:jme)                                 
      REAL FL(ims:ime,jms:jme,0:1)                                            
      REAL XIG(81), XJG(81)  ! won't use but nine of these fellers.
!      COMMON /DEPAR2/ XIG(NF),XJG(NF),IG0(ims:ime,jms:jme),JG0(ims:ime,jms:jme)             
      INTEGER IFRST
      COMMON /DEPAR2/ XIG,XJG,IFRST
      DATA IFRST /1/
!                                                                       
                                                                        
      REAL donor, y1, y2, a
      DONOR(Y1,Y2,A)=(Y1*AMAX1(0.,SIGN(1.,A))-Y2*AMIN1(0.,SIGN(1.,A)))*A
      REAL tr4, ym1, y0, yp1, yp2
      TR4(YM1,Y0,YP1,YP2,A)=A*ONE12*(7.*(YP1+Y0)-(YP2+YM1))               &
       -A*A*ONE24*(15.*(YP1-Y0)-(YP2-YM1))-A*A*A*ONE12*((YP1+Y0)          & 
       -(YP2+YM1))+A*A*A*A*ONE24*(3.*(YP1-Y0)-(YP2-YM1))                
      REAL pp, pn, x
      PP(X)=AMAX1(0.,X)                                                 
      PN(X)=AMIN1(0.,X)                                                 
!!      XIG(I) = 1./3.-FLOAT(I-1)*1./3
!!      XJG(J) = 1./3.-FLOAT(J-1)*1./3

      IF ( IFRST .EQ. 1 ) THEN
        DO I=1,3   
          DO J=1,3 
            XIG(J+(I-1)*3)=1./3.-FLOAT(J-1)*1./3.   
            XJG(J+(I-1)*3)=1./3.-FLOAT(I-1)*1./3.   
          ENDDO
        ENDDO
        IFRST = 0
      ENDIF

!
      N2STAR = jts
      N2END  = jte
      N1STAR = its
      N1END  = ite

      DO 2000 IIM=1,NF                                                  
!                                                                       
!  HERE STARTS RESIDUAL ADVECTION                                       
!                                                                       
        DO 9000 JJ=N2STAR,N2END                                         
          DO 50 J=-IOR,IOR                                              

            DO 51 I=-IOR,IOR                                            
              DO 511 II=N1STAR,N1END                                    
  511         Y(II,JJ,I)=XF(II+I,JJ+J,IIM)              
   51       CONTINUE                                                    

            DO 811 II=N1STAR,N1END                                      
              FL(II,JJ,0)=DONOR(Y(II,JJ,-1),Y(II,JJ,0),XIG(IIM))        
  811         FL(II,JJ,1)=DONOR(Y(II,JJ,0),Y(II,JJ,1),XIG(IIM))           
            DO 812 II=N1STAR,N1END                                      
  812         W(II,JJ)=Y(II,JJ,0)-(FL(II,JJ,1)-FL(II,JJ,0))               
            DO 813 II=N1STAR,N1END                                      
              MXM(II,JJ)=                                               &
                         AMAX1(Y(II,JJ,-1),Y(II,JJ,0),Y(II,JJ,1),       &
                         W(II,JJ))                                      
  813         MN(II,JJ)=AMIN1(Y(II,JJ,-1),Y(II,JJ,0),Y(II,JJ,1),W(II,JJ)) 
            DO 312 II=N1STAR,N1END                                      
              F(II,JJ,0)=                                               &
                         TR4(Y(II,JJ,-2),Y(II,JJ,-1),Y(II,JJ,0),        &
                         Y(II,JJ,1),XIG(IIM))                           
  312       F(II,JJ,1)=                                                 &
                       TR4(Y(II,JJ,-1),Y(II,JJ,0),Y(II,JJ,1),Y(II,JJ,2),&
                       XIG(IIM))                                        
            DO 822 II=N1STAR,N1END                                      
              F(II,JJ,0)=F(II,JJ,0)-FL(II,JJ,0)                         
  822       F(II,JJ,1)=F(II,JJ,1)-FL(II,JJ,1)                           
            DO 823 II=N1STAR,N1END                                      
              OV(II,JJ)=(MXM(II,JJ)-W(II,JJ))/(-PN(F(II,JJ,1))+         &
                        PP(F(II,JJ,0))+EP)                              
  823       UN(II,JJ)=(W(II,JJ)-MN(II,JJ))/(PP(F(II,JJ,1))-             &
                      PN(F(II,JJ,0))+EP)                                
            DO 824 II=N1STAR,N1END                                      
              F(II,JJ,0)=PP(F(II,JJ,0))*AMIN1(1.,OV(II,JJ))+            &
                         PN(F(II,JJ,0))*AMIN1(1.,UN(II,JJ))             
              F(II,JJ,1)=PP(F(II,JJ,1))*AMIN1(1.,UN(II,JJ))+            &
                         PN(F(II,JJ,1))*AMIN1(1.,OV(II,JJ))             
  824       CONTINUE                                                    
            DO 825 II=N1STAR,N1END                                      
  825       Y(II,JJ,0)=W(II,JJ)-(F(II,JJ,1)-F(II,JJ,0))                 
            DO 361 II=N1STAR,N1END                                      
  361       Z(II,JJ,J)=Y(II,JJ,0)                                       
!                                                                       
!  END IF FIRST J LOOP                                                  
!                                                                       
 8000       CONTINUE                                                    
   50     CONTINUE                                                      

          DO 911 II=N1STAR,N1END                                        
            FL(II,JJ,0)=DONOR(Z(II,JJ,-1),Z(II,JJ,0),XJG(IIM))          
  911     FL(II,JJ,1)=DONOR(Z(II,JJ,0),Z(II,JJ,1),XJG(IIM))             
          DO 912 II=N1STAR,N1END                                        
  912     W(II,JJ)=Z(II,JJ,0)-(FL(II,JJ,1)-FL(II,JJ,0))                 
          DO 913 II=N1STAR,N1END                                        
            MXM(II,JJ)=AMAX1(Z(II,JJ,-1),Z(II,JJ,0),Z(II,JJ,1),W(II,JJ))
  913     MN(II,JJ)=AMIN1(Z(II,JJ,-1),Z(II,JJ,0),Z(II,JJ,1),W(II,JJ))   
          DO 412 II=N1STAR,N1END                                        
            F(II,JJ,0)=                                                 &
                       TR4(Z(II,JJ,-2),Z(II,JJ,-1),Z(II,JJ,0),Z(II,JJ,1)&
                       ,XJG(IIM))                                       
  412     F(II,JJ,1)=                                                   &
                     TR4(Z(II,JJ,-1),Z(II,JJ,0),Z(II,JJ,1),Z(II,JJ,2),  &
                     XJG(IIM))                                          
          DO 922 II=N1STAR,N1END                                        
            F(II,JJ,0)=F(II,JJ,0)-FL(II,JJ,0)                           
  922     F(II,JJ,1)=F(II,JJ,1)-FL(II,JJ,1)                             
          DO 923 II=N1STAR,N1END                                        
            OV(II,JJ)=(MXM(II,JJ)-W(II,JJ))/(-PN(F(II,JJ,1))+           &
                      PP(F(II,JJ,0))+EP)                                
  923       UN(II,JJ)=(W(II,JJ)-MN(II,JJ))/(PP(F(II,JJ,1))-PN(F(II,JJ,0))+ &
                    EP)                                                 
          DO 924 II=N1STAR,N1END                                        
            F(II,JJ,0)=PP(F(II,JJ,0))*AMIN1(1.,OV(II,JJ))+PN(F(II,JJ,0))  &
                       *AMIN1(1.,UN(II,JJ))                             
            F(II,JJ,1)=PP(F(II,JJ,1))*AMIN1(1.,UN(II,JJ))+PN(F(II,JJ,1))  &
                       *AMIN1(1.,OV(II,JJ))                             
  924     CONTINUE                                                      
 9000   CONTINUE                                                        
        DO 925 JJ=N2STAR,N2END                                          
          DO 925 II=N1STAR,N1END                                        
  925     XF(II,JJ,IIM)=W(II,JJ)-(F(II,JJ,1)-F(II,JJ,0))                
                                                                        
!                                                                       
 2000 CONTINUE                                                          
      RETURN                                                            
      END