anchor.diff:    second      = INT(totseconds-hour*h2s-minute*m2s)
     millisecond = NINT((totseconds-INT(totseconds))*1d3)
   
  -  num2date = datetime(year,month,day,hour,minute,second,millisecond)
  +  num2date = datetime(year,month,day,hour,minute,second,millisecond,tz=0)
   
     ! Handle a special case caused by floating-point arithmethic:
     IF(num2date % millisecond == 1000)THEN
  
positive.code:   ! ARGUMENTS:
    TYPE(datetime),INTENT(IN) :: d0,d1
  
    eq = d0 % year        == d1 % year   .AND. &
         d0 % month       == d1 % month  .AND. &
         d0 % day         == d1 % day    .AND. &
         d0 % hour        == d1 % hour   .AND. &
         d0 % minute      == d1 % minute .AND. &
         d0 % second      == d1 % second .AND. &
         d0 % millisecond == d1 % millisecond
  
  ENDFUNCTION eq
  !======================================================================>
  
negative.code: PUBLIC :: strptime
  PUBLIC :: tm2date
  
  ! 8-byte floating point kind:
  INTEGER,PARAMETER :: real_dp = KIND(1d0)
  
  ! Constant multipliers that transform a number 
  ! of some time unit to another:
  REAL(KIND=real_dp),PARAMETER :: one = 1d0      ! 1
  REAL(KIND=real_dp),PARAMETER :: d2h = 24d0     ! day    -> hour
  REAL(KIND=real_dp),PARAMETER :: h2d = one/d2h  ! hour   -> day
  