--- ipcache.c.orig	Mon Oct 30 11:29:58 2000
+++ ipcache.c	Tue Oct 31 09:46:01 2000
@@ -372,6 +372,7 @@
     i.addrs.in_addrs = xcalloc(na, sizeof(struct in_addr));
     i.addrs.bad_mask = xcalloc(na, sizeof(unsigned char));
     i.addrs.count = (unsigned char) na;
+    i.addrs.cur = i.addrs.count - 1;
     for (j = 0, k = 0; k < nr; k++) {
 	if (answers[k].type != RFC1035_TYPE_A)
 	    continue;
@@ -727,10 +728,11 @@
 	ia = &i->addrs;
     }
     for (k = 0; k < ia->count; k++) {
-	if (++ia->cur == ia->count)
-	    ia->cur = 0;
 	if (!ia->bad_mask[ia->cur])
 	    break;;
+	if (ia->cur == 0)
+            ia->cur = ia->count;
+        ia->cur--;
     }
     if (k == ia->count) {
 	/* All bad, reset to All good */
@@ -741,8 +743,8 @@
 	ia->badcount = 0;
 	ia->cur = 0;
     }
-    debug(14, 3) ("ipcacheCycleAddr: %s now at %s\n", name,
-	inet_ntoa(ia->in_addrs[ia->cur]));
+    debug(14, 3) ("ipcacheCycleAddr: %s now at %s(%d)\n", name,
+	inet_ntoa(ia->in_addrs[ia->cur]), ia->cur);
 }
 
 /*

