--- orig/linux-proc.c	2008-10-18 13:20:13.000000000 +0200
+++ net/linux-proc.c	2008-10-18 13:46:05.000000000 +0200
@@ -4,6 +4,8 @@
 #include <math.h>
 #include <fcntl.h>
 #include <unistd.h>
+#include <sys/time.h>
+#include <time.h>
 
 #include <glibtop.h>
 #include <glibtop/cpu.h>
@@ -286,9 +288,12 @@
 
     static int ticks = 0;
     static gulong past[COUNT_TYPES] = {0};
+    static struct timeval pasttime;
+    static int pastdata[5];
     static AutoScaler scaler;
 
     gulong present[COUNT_TYPES] = {0};
+    struct timeval presenttime;
 
     guint i;
     gchar **devices;
@@ -298,6 +303,7 @@
     if(ticks == 0)
     {
 	autoscaler_init(&scaler, 60, 501);
+	gettimeofday(&pasttime, NULL);
     }
 
 
@@ -308,6 +314,7 @@
 	int index;
 	glibtop_netload netload;
 
+	gettimeofday(&presenttime, NULL);
 	glibtop_get_netload(&netload, devices[i]);
 
 	g_return_if_fail((netload.flags & needed_netload_flags) == needed_netload_flags);
@@ -341,6 +348,11 @@
 	ticks++;
 	memset(data, 0, COUNT_TYPES * sizeof data[0]);
     }
+    else if (presenttime.tv_sec == pasttime.tv_sec) 
+    {
+	    memcpy(data, pastdata, COUNT_TYPES * sizeof data[0]);
+	    return;
+    }
     else
     {
 	int delta[COUNT_TYPES];
@@ -374,6 +386,8 @@
     data[4] = Maximum - data[3] - data[2] - data[1] - data[0];
 
     memcpy(past, present, sizeof past);
+    memcpy(&pasttime, &presenttime, sizeof pasttime);
+    memcpy(pastdata, data, COUNT_TYPES * sizeof data[0]);
 }
 
 
