      subroutine carr2ut_rt(jd,carr,djd,j)
!
!     Test forward and inverse Carrington Rotation Number algorithms
!
!     B. Knapp, 2001-01-10, 2001-04-24 (i*4)
!
C
C     RCS DATA
C     
C     $Header$
C     
C     $Log$
C
C
      implicit none
C
C     INPUT
      REAL*8 JD
C
C     OUTPUT
      REAL*8 CARR, JD2, DJD
      INTEGER*4 J
C
C     CONSTANTS
      REAL*8 TWOPI, D2R, TOL
      PARAMETER (TWOPI=2.0D0*3.14159265358979324D0,D2R=TWOPI/360.0D0)
      PARAMETER (TOL=2.d-12)
C
C     LOCAL
      REAL*8 JDE, M, DT_PREV, DT, Z
C
C     FUNCTIONS, SUBROUTINES
      REAL*8 UT2TD, TD2UT
      EXTERNAL UT2TD, TD2UT
C
C
C     GET DYNAMICAL (EPHEMERIS) TIME JDE...
C     JD = 2451545.0d0
      JDE = UT2TD(JD)
C
C     CARRINGTON ROTATION NUMBER
      DT_PREV = -1.0D0
      DT = 0.0D0
      J = 0
      do while (abs(dt-dt_prev) .gt. TOL .and. j .lt. 100)
         CARR = (JDE-DT-2398140.2270D0)/27.2752316D0
         M = (281.96D0+26.882476D0*CARR)*D2R
         DT_PREV = DT
         DT = 0.1454D0*SIN(M)-0.0085D0*SIN(2.D0*M)-0.0141D0*COS(2.D0*M)
         J = J+1
         if (j .gt. 90) then
            write(*,5) j, CARR, DT, abs(dt-dt_prev)
 5          format(i6,f24.16,1pe24.16,e12.4)
         endif
      enddo
C
      M = (281.96D0 + 26.882476D0*CARR)*D2R
      Z = 2398140.2270D0 + 27.2752316D0*CARR +
     &    0.1454D0*SIN(M)-0.0085D0*SIN(2.D0*M)-0.0141D0*COS(2.D0*M)
      JD2 = TD2UT(Z)
C
      djd = jd-jd2
C     write(*,10) JD, CARR, JD-JD2, J
 10   format(2f24.16,1pe16.6,i8)
      return
      end

