anchor.diff:  
     self % millisecond = self % millisecond+ms
   
  -  IF(self % millisecond >= 1000)THEN
  -    CALL self % addSeconds(self % millisecond/1000)
  -    self % millisecond = MOD(self % millisecond,1000)
  -  ELSEIF(self % millisecond < 0)THEN
  -    CALL self % addSeconds(self % millisecond/1000-1)
  -    self % millisecond = MOD(self % millisecond,1000)+1000
  -  ENDIF
  +  DO
  +    IF(self % millisecond >= 1000)THEN
  +      CALL self % addSeconds(self % millisecond/1000)
  +      self % millisecond = MOD(self % millisecond,1000)
  +    ELSEIF(self % millisecond < 0)THEN
  +      CALL self % addSeconds(self % millisecond/1000-1)
  +      self % millisecond = MOD(self % millisecond,1000)+1000
  +    ELSE
  +      EXIT
  +    ENDIF
  +  ENDDO
   
   ENDSUBROUTINE addMilliseconds
   !======================================================================>
  
positive.code: !
  ! MODULE: datetime
  !
  ! VERSION: 1.0.2
  !
  ! LAST UPDATE: 2014-09-30
  !
  ! AUTHOR: Milan Curcic
  !         University of Miami
  
negative.code:   INTEGER,        INTENT(IN)    :: s
  
    self % second = self % second+s
  
    DO
      IF(self % second >= 60)THEN
        CALL self % addMinutes(self % second/60)
        self % second = MOD(self % second,60)
      ELSEIF(self % second < 0)THEN
        CALL self % addMinutes(self % second/60-1)
        self % second = MOD(self % second,60)+60
      ELSE
        EXIT
      ENDIF
    ENDDO
  
  ENDSUBROUTINE addSeconds
  !======================================================================>
  