--- curses.c.orig	Fri Mar  3 23:46:55 2000
+++ curses.c	Fri Sep 22 00:11:11 2000
@@ -58,10 +58,12 @@
 #endif
 
 #include <time.h>
 extern char LocalHostname[];
 
+extern int color_lasts;
+
 void pwcenter(char *str) {
   int maxx, maxy;
   int cx;
 
   getmaxyx(stdscr, maxy, maxx);
@@ -116,14 +118,28 @@
 
       getyx(stdscr, y, x);
       move(y, startstat);
 
       /* net_xxx returns times in usecs. Just display millisecs */
-      printw("  %3d%% %4d %4d  %4d %4d %4d %6d", 
+      printw("  %3d%% %5d %5d  ",
              net_percent(at),
-             net_returned(at),  net_xmit(at),
-             net_last(at)/1000, net_best(at)/1000, 
+             net_returned(at),  net_xmit(at));
+      if(color_lasts && net_last(at) != net_avg(at)) {
+        if(net_last(at)<net_avg(at))
+          attron(COLOR_PAIR(1));
+        else
+          attron(COLOR_PAIR(2));
+      }
+      printw("%4d",net_last(at)/1000);
+      if(color_lasts && net_last(at) != net_avg(at)) {
+        if(net_last(at)<net_avg(at))
+          attroff(COLOR_PAIR(1));
+        else
+          attroff(COLOR_PAIR(2));
+      }
+      printw(" %4d %4d %6d", 
+             net_best(at)/1000, 
 	     net_avg(at)/1000,  net_worst(at)/1000);
 
 
     } else {
       printw("???");
@@ -250,34 +266,38 @@
 
   rowstat = 5;
 
   move(0, 0);
   attron(A_BOLD);
-  pwcenter("Matt's traceroute  [v" VERSION "]");
+  pwcenter("Matt's traceroute  [v" VERSION "b]");
   attroff(A_BOLD);
 
   mvprintw(1,0, LocalHostname);
   time(&t);
   mvprintw(1, maxx-25, ctime(&t));
 
-  printw("Keys:  ");
+  printw("Keys: ");
   attron(A_BOLD);  printw("D");  attroff(A_BOLD);
-  printw(" - Display mode    ");
-  attron(A_BOLD);  printw("R");  attroff(A_BOLD);
-  printw(" - Restart statistics    ");
+  printw("isplay mode  ");
+  attron(A_BOLD);  printw("P");  attroff(A_BOLD);
+  printw("ause  ");
   attron(A_BOLD);  printw("Q");  attroff(A_BOLD);
-  printw(" - Quit\n");
+  printw("uit  ");
+  attron(A_BOLD);  printw("R");  attroff(A_BOLD);
+  printw("estart");
+  printw("\n");
   
   attron(A_BOLD);
   mvprintw(rowstat - 1, 0, "Hostname");
 
   if (display_mode == 0) {
-    startstat = maxx - 41;
+    startstat = maxx - 43;
 
     /* Modified by Brian Casey December 1997 bcasey@imagiware.com */
-    mvprintw(rowstat - 2, startstat, "    Packets               Pings");
-    mvprintw(rowstat - 1, startstat, " %%Loss  Rcv  Snt  Last Best  Avg  Worst");
+    /* Modified by Michael Thorpe 2000-06-28 mike@pedantic.org */
+    mvprintw(rowstat - 2, startstat, "     Packets                Pings");
+    mvprintw(rowstat - 1, startstat, " %%Loss   Rcv   Snt  Last Best  Avg  Worst");
 
     attroff(A_BOLD);
     move(rowstat, 0);
 
     mtr_curses_hosts(startstat);
@@ -308,10 +328,13 @@
 
 void mtr_curses_open() {
   initscr();
   raw();
   noecho(); 
+  start_color();
+  init_pair(1,COLOR_GREEN,COLOR_BLACK);
+  init_pair(2,COLOR_RED,COLOR_BLACK);
 
   mtr_curses_redraw();
 }
 
 void mtr_curses_close() {  
--- mtr.c.orig	Fri Sep 22 00:12:40 2000
+++ mtr.c	Fri Sep 22 00:10:44 2000
@@ -45,10 +45,11 @@
 float WaitTime = 1.0;
 char *Hostname = NULL;
 char LocalHostname[128];
 int dns = 1;
 int packetsize = MINPACKET;
+int color_lasts = 1;
 
 void parse_arg(int argc, char **argv) {
   int opt;
   static struct option long_options[] = {
     { "version", 0, 0, 'v' },
@@ -65,15 +66,18 @@
     { 0, 0, 0, 0 }
   };
 
   opt = 0;
   while(1) {
-    opt = getopt_long(argc, argv, "hvrc:tklnsi:p:", long_options, NULL);
+    opt = getopt_long(argc, argv, "Chvrc:tklnsi:p:", long_options, NULL);
     if(opt == -1)
       break;
 
     switch(opt) {
+    case 'C':
+      color_lasts = 0;
+      break;
     case 'v':
       PrintVersion = 1;
       break;
     case 'h':
       PrintHelp = 1;
--- select.c.orig	Fri Mar  3 23:46:55 2000
+++ select.c	Thu Jun 29 04:38:59 2000
@@ -76,11 +76,11 @@
     FD_SET(netfd, &readfd);
     if(netfd >= maxfd)
       maxfd = netfd + 1;
 
     if(anyset || paused) {
-      selecttime.tv_sec = 0;
+      selecttime.tv_sec = paused;
       selecttime.tv_usec = 0;
       
       select(maxfd, (void *)&readfd, NULL, NULL, &selecttime);
     } else {
       if(Interactive) 
@@ -142,14 +142,14 @@
 
       if (action == ActionClear) 
 	display_clear();
 
       if (action == ActionPause) 
-	paused=1;
+	paused^=1;
 
       if (action == ActionResume) 
-	paused=0;
+	paused^=1;
 
       anyset = 1;
     }
 
     /*  Have we finished a nameservice lookup?  */
