--- vmstat.c +++ vmstat.c 2012-06-01 15:54:39.388411889 +0000 @@ -244,7 +244,7 @@ static void new_format(void) unsigned int intr[2], ctxt[2]; unsigned int sleep_half; unsigned long kb_per_page = sysconf(_SC_PAGESIZE) / 1024ul; - int debt = 0; /* handle idle ticks running backwards */ + long long debt = 0; /* handle idle ticks running backwards */ sleep_half = (sleep_time / 2); new_header(); @@ -305,12 +306,12 @@ static void new_format(void) /* idle can run backwards for a moment -- kernel "feature" */ if (debt) { - didl = (int)didl + debt; - debt = 0; + didl = (long long)didl + debt; + debt = 0LL; } - if ((int)didl < 0) { - debt = (int)didl; - didl = 0; + if ((long long)didl < 0) { + debt = (long long)didl; + didl = 0ULL; } Div = duse + dsys + didl + diow + dstl;