diff --git a/lib/ChangeLog b/lib/ChangeLog
index 1150620..537a705 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,13 @@
+2005-04-27 Paul Jakma <paul.jakma@sun.com>
+
+	* workqueue.h: (struct work_queue_item) change retry_count to ran,
+	  its a count of number item has been run.
+	* workqueue.c: (show_work_queues) Fix formating of slightly
+	  bugfix: fix SIGFPE if wq->runs is 0.
+	  (work_queue_run) retry logic was slightly wrong.
+	  cycles.best is 0 initialy, granularity is 1, so update best
+	  if cycles >= granularity, not just >.
+	 
 2005-04-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
 	* buffer.c (buffer_write): Comment out call to buffer_flush_available.
diff --git a/lib/workqueue.c b/lib/workqueue.c
index 0c9592d..7931d19 100644
--- a/lib/workqueue.c
+++ b/lib/workqueue.c
@@ -163,7 +163,7 @@
   
   vty_out (vty, 
            "%8s  %11s  %8s %21s%s",
-           "List","(ms)    ","Q. Runs","Cycle Counts   ",
+           "List","(ms)   ","Q. Runs","Cycle Counts   ",
            VTY_NEWLINE);
   vty_out (vty,
            "%8s  %5s %5s  %8s  %7s %6s %6s %s%s",
@@ -176,12 +176,13 @@
  
   for (ALL_LIST_ELEMENTS_RO ((&work_queues), node, wq))
     {
-      vty_out (vty,"%8d  %5d %5d  %8ld  %7d %6d %6u  %s%s",
+      vty_out (vty,"%8d  %5d %5d  %8ld  %7d %6d %6u %s%s",
                listcount (wq->items),
                wq->spec.delay, wq->spec.hold,
                wq->runs,
-               wq->cycles.best, wq->cycles.granularity, 
-                 (unsigned int)(wq->cycles.total / wq->runs),
+               wq->cycles.best, wq->cycles.granularity,
+                 (wq->runs) ? 
+                   (unsigned int) (wq->cycles.total / wq->runs) : 0,
                wq->name,
                VTY_NEWLINE);
     }
@@ -232,7 +233,7 @@
     assert (item && item->data);
     
     /* dont run items which are past their allowed retries */
-    if (item->retry_count >= wq->spec.max_retries)
+    if (item->ran > wq->spec.max_retries)
       {
         /* run error handler, if any */
 	if (wq->spec.errorfunc)
@@ -245,21 +246,19 @@
     do
       {
         ret = wq->spec.workfunc (item->data);
-        item->retry_count++;
+        item->ran++;
       }
     while ((ret == WQ_RETRY_NOW) 
-           && (item->retry_count < wq->spec.max_retries));
+           && (item->ran < wq->spec.max_retries));
 
     switch (ret)
       {
       case WQ_RETRY_LATER:
 	{
-	  item->retry_count++;
 	  goto stats;
 	}
       case WQ_REQUEUE:
 	{
-	  item->retry_count++;
 	  work_queue_item_requeue (wq, node);
 	  break;
 	}
@@ -301,7 +300,7 @@
                                              : WORK_QUEUE_MIN_GRANULARITY);
     }
   
-  if (cycles > (wq->cycles.granularity))
+  if (cycles >= (wq->cycles.granularity))
     {
       if (cycles > wq->cycles.best)
         wq->cycles.best = cycles;
diff --git a/lib/workqueue.h b/lib/workqueue.h
index 45fffe7..5b4e82e 100644
--- a/lib/workqueue.h
+++ b/lib/workqueue.h
@@ -42,7 +42,7 @@
 struct work_queue_item
 {
   void *data;                           /* opaque data */
-  unsigned short retry_count;           /* number of times retried */            
+  unsigned short ran;			/* # of times item has been run */
 };
 
 struct work_queue
@@ -54,13 +54,13 @@
   /* specification for this work queue */
   struct {
     /* work function to process items with */
-    wq_item_status (*workfunc) (void *);
+    wq_item_status (*workfunc) ();
 
     /* error handling function, optional */
     void (*errorfunc) (struct work_queue *, struct work_queue_item *);
     
     /* callback to delete user specific item data */
-    void (*del_item_data) (void *);
+    void (*del_item_data) ();
     
     /* max number of retries to make for item that errors */
     unsigned int max_retries;	
