diff --recursive --unified --ignore-space-change mrtg-2.9.0pre24/bin/mrtg mrtg-2.9.0pre24-ds/bin/mrtg
--- mrtg-2.9.0pre24/bin/mrtg	Tue Sep  5 17:07:51 2000
+++ mrtg-2.9.0pre24-ds/bin/mrtg	Tue Sep 12 22:15:03 2000
@@ -424,7 +424,7 @@
         @exec = ("${FindBin::Bin}${MRTG_lib::SL}rateup", 
                  "$$cfg{'logdir'}$$rcfg{'directory'}{$router}","$router",
                  $time, $$rcfg{'options'}{'unknaszero'}{$router} ? '-z':'-Z',
-                 "$up_abs"."p", $inlast, $outlast, $absmax,
+                 "$up_abs"."p", $inlast, $outlast, $absmax, $$rcfg{'options'}{'nomax'}{$router} ? '1' : '0', 
                  "C", $$rcfg{'rgb1'}{$router},$$rcfg{'rgb2'}{$router},
                  $$rcfg{'rgb3'}{$router},$$rcfg{'rgb4'}{$router},
                  $$rcfg{'rgb5'}{$router});
@@ -432,7 +432,7 @@
         @exec = ("${FindBin::Bin}${MRTG_lib::SL}rateup", 
                  "$$cfg{'logdir'}$$rcfg{'directory'}{$router}","$router",
                  $time, $$rcfg{'options'}{'unknaszero'}{$router} ? '-z':'-Z',
-                 "$up_abs", $inlast, $outlast, $absmax,
+                 "$up_abs", $inlast, $outlast, $absmax, $$rcfg{'options'}{'nomax'}{$router} ? '1' : '0',
                  "c", $$rcfg{'rgb1'}{$router},$$rcfg{'rgb2'}{$router},
                  $$rcfg{'rgb3'}{$router},$$rcfg{'rgb4'}{$router});
     }
diff --recursive --unified --ignore-space-change mrtg-2.9.0pre24/lib/mrtg2/MRTG_lib.pm mrtg-2.9.0pre24-ds/lib/mrtg2/MRTG_lib.pm
--- mrtg-2.9.0pre24/lib/mrtg2/MRTG_lib.pm	Tue Sep  5 17:07:56 2000
+++ mrtg-2.9.0pre24-ds/lib/mrtg2/MRTG_lib.pm	Tue Sep 12 22:02:00 2000
@@ -514,7 +514,7 @@
     my ($rou, $confname, $one_option);
     my $error="no";
     my(@known_options) = qw(growright bits noinfo absolute gauge nopercent
-			    integer perhour perminute transparent dorelpercent unknaszero withzeros);
+			    integer perhour perminute transparent dorelpercent unknaszero withzeros nomax);
 
     if (defined $$cfg{workdir}) {
         ensureSL(\$$cfg{workdir});
diff --recursive --unified --ignore-space-change mrtg-2.9.0pre24/src/rateup.c mrtg-2.9.0pre24-ds/src/rateup.c
--- mrtg-2.9.0pre24/src/rateup.c	Tue Sep  5 17:07:56 2000
+++ mrtg-2.9.0pre24-ds/src/rateup.c	Tue Sep 12 22:14:58 2000
@@ -896,10 +896,11 @@
     }
 }
 	     
-void update(in, out, abs_max, absupdate)
+void update(in, out, abs_max, absupdate, noabsmax)
 char *in, *out;
 unsigned long abs_max;
 int absupdate;
+int noabsmax;
 {
     FILE *fo;
     char buf[128],buf1[128],buf2[128];
@@ -956,6 +957,10 @@
 	    outrate = diff(out,last.out) / period;
 	}
     }
+
+if(noabsmax)
+	abs_max = (unsigned long)-1;
+
     if (inrate < 0 || inrate > abs_max) {
       if (unknaszero == 1) {
 	inrate = 0;                             /* sync unknown to zero */
@@ -1268,36 +1273,36 @@
                 if (argv[argi][1] == 'p') {
 		   dorelpercent = 1;
                 }
-		update(argv[argi+1],argv[argi+2],atol(argv[argi+3]),0);
-		used = 4;
+		update(argv[argi+1],argv[argi+2],atol(argv[argi+3]),0, atoi(argv[argi+4]));
+		used = 5;
 		break;
 	    case 'a':	/* Absolute Update file */
                 if (argv[argi][1] == 'p') {
 		   dorelpercent = 1;
                 }
-	   	update(argv[argi+1],argv[argi+2],atol(argv[argi+3]),1);
-		used = 4;
+	   	update(argv[argi+1],argv[argi+2],atol(argv[argi+3]),1, atoi(argv[argi+4]));
+		used = 5;
 		break;
 	    case 'g':	/* Gauge Update file */
                 if (argv[argi][1] == 'p') {
 		   dorelpercent = 1;
                 }
-		update(argv[argi+1],argv[argi+2],atol(argv[argi+3]),2);
-		used = 4;
+		update(argv[argi+1],argv[argi+2],atol(argv[argi+3]),2, atoi(argv[argi+4]));
+		used = 5;
 		break;
             case 'h':
                 if (argv[argi][1] == 'p') {
 		   dorelpercent = 1;
                 }
-                update(argv[argi+1],argv[argi+2],atol(argv[argi+3]),3);
-                used = 4;
+                update(argv[argi+1],argv[argi+2],atol(argv[argi+3]),3, atoi(argv[argi+4]));
+                used = 5;
                 break;
             case 'm':
                 if (argv[argi][1] == 'p') {
 		   dorelpercent = 1;
                 }
-                update(argv[argi+1],argv[argi+2],atol(argv[argi+3]),4);
-                used = 4;
+                update(argv[argi+1],argv[argi+2],atol(argv[argi+3]),4, atoi(argv[argi+4]));
+                used = 5;
                 break;
 	    case 'W':	/* Week format */
 		weekformat = argv[argi+1][0];
