anchor.diff:  !
   !======================================================================>
     
  +  ! ARGUMENTS:
     CLASS(datetime),INTENT(INOUT) :: self
     INTEGER,        INTENT(IN)    :: h
   
  
positive.code: !
  !======================================================================>
  
    TYPE(datetime),INTENT(IN) :: d0,d1
  
    lt = d1 > d0
  
negative.code:   
  
  
  PURE ELEMENTAL LOGICAL FUNCTION eq_td(td0,td1)
  !======================================================================>
  !
  ! timedelta object comparison operator. Returns .TRUE. if
  ! td0 is equal to td1, and .FALSE. otherwise. Overloads the operator ==.
  !
  !======================================================================>
  
    ! ARGUMENTS:
    TYPE(timedelta),INTENT(IN) :: td0,td1
  
    eq_td = td0%total_seconds() == td1%total_seconds()
  
  ENDFUNCTION eq_td
  !======================================================================>
  
  
  
  PURE ELEMENTAL LOGICAL FUNCTION gt_td(td0,td1)
  !======================================================================>
  !
  ! timedelta object comparison operator. Returns .TRUE. if
  ! td0 is greater than td1, and .FALSE. otherwise. Overloads the 
  ! operator >.
  !
  !======================================================================>
  
    ! ARGUMENTS:
    TYPE(timedelta),INTENT(IN) :: td0,td1
  
    gt_td = td0%total_seconds() > td1%total_seconds()
  
  ENDFUNCTION gt_td
  !======================================================================>
  
  
  
  PURE ELEMENTAL LOGICAL FUNCTION ge_td(td0,td1)
  !======================================================================>
  !
  ! timedelta object comparison operator. Returns .TRUE. if
  ! td0 is greater than or equal to td1, and .FALSE. otherwise. Overloads 
  ! the operator >=.
  !
  !======================================================================>
  
    ! ARGUMENTS:
    TYPE(timedelta),INTENT(IN) :: td0,td1
  
    ge_td = td0%total_seconds() >= td1%total_seconds()
  
  ENDFUNCTION ge_td
  !======================================================================>
  
  
  
  PURE ELEMENTAL LOGICAL FUNCTION lt_td(td0,td1)
  !======================================================================>
  !
  ! timedelta object comparison operator. Returns .TRUE. if
  ! td0 is less than td1, and .FALSE. otherwise. Overloads the operator <.
  !
  !======================================================================>
  
    ! ARGUMENTS:
    TYPE(timedelta),INTENT(IN) :: td0,td1
  
    lt_td = td0%total_seconds() < td1%total_seconds()
  
  ENDFUNCTION lt_td
  !======================================================================>
  
  
  
  PURE ELEMENTAL LOGICAL FUNCTION le_td(td0,td1)
  !======================================================================>
  !
  ! timedelta object comparison operator. Returns .TRUE. if
  ! td0 is less than or equal to td1, and .FALSE. otherwise. Overloads the 
  ! operator <=.
  !
  !======================================================================>
  
    ! ARGUMENTS:
    TYPE(timedelta),INTENT(IN) :: td0,td1
  
    le_td = td0%total_seconds() <= td1%total_seconds()
  
  ENDFUNCTION le_td
  !======================================================================>
  
  
  
  PURE ELEMENTAL LOGICAL FUNCTION isLeapYear(year)
  !======================================================================>
  !
  