timeval_divide(struct timeval* avg, const struct timeval* sum, size_t d)
{
#ifndef S_SPLINT_S
	size_t leftover;
	if(d <= 0) {
		avg->tv_sec = 0;
		avg->tv_usec = 0;
		return;
	}
	avg->tv_sec = sum->tv_sec / d;
	avg->tv_usec = sum->tv_usec / d;
	/* handle fraction from seconds divide */
	leftover = sum->tv_sec - avg->tv_sec*d;
	if(leftover <= 0)
		leftover = 0;
	avg->tv_usec += (((long long)leftover)*((long long)1000000))/d;
	if(avg->tv_sec < 0)
		avg->tv_sec = 0;
	if(avg->tv_usec < 0)
		avg->tv_usec = 0;
#endif
}
timeval_divide(struct timeval* avg, const struct timeval* sum, size_t d)
{
#ifndef S_SPLINT_S
	size_t leftover;
	if(d <= 0) {
		avg->tv_sec = 0;
		avg->tv_usec = 0;
		return;
	}
	avg->tv_sec = sum->tv_sec / d;
	avg->tv_usec = sum->tv_usec / d;
	 
	leftover = sum->tv_sec - avg->tv_sec*d;
	if(leftover <= 0)
		leftover = 0;
	avg->tv_usec += (((long long)leftover)*((long long)1000000))/d;
	if(avg->tv_sec < 0)
		avg->tv_sec = 0;
	if(avg->tv_usec < 0)
		avg->tv_usec = 0;
#endif
}