rem: int nsec = (y->tv_nsec - x->tv_nsec) / 1000000000 + 1; y->tv_nsec -= 1000000000 * nsec; y->tv_sec += nsec;
add: sec = TIME_T_MAX; nsec = 999999999; } else if (sec == 0 && nsec <= 0) return false;  if (nsec < 0) { sec--; nsec += 1000000000;
context: timespec_subtract (struct timespec *diff,		   const struct timespec *x, struct timespec *y){  /* Perform the carry for the later subtraction by updating Y. */  if (x->tv_nsec < y->tv_nsec)    {      int nsec = (y->tv_nsec - x->tv_nsec) / 1000000000 + 1;      y->tv_nsec -= 1000000000 * nsec;      y->tv_sec += nsec;    }  if (1000000000 < x->tv_nsec - y->tv_nsec)    {      int nsec = (y->tv_nsec - x->tv_nsec) / 1000000000;      y->tv_nsec += 1000000000 * nsec;      y->tv_sec -= nsec;    }  /* Compute the time remaining to wait.     `tv_nsec' is certainly positive. */  diff->tv_sec = x->tv_sec - y->tv_sec;  diff->tv_nsec = x->tv_nsec - y->tv_nsec;  /* Return 1 if result is positive. */  return y->tv_sec < x->tv_sec;}