fix overflow in peer selection
diff --git a/http.go b/http.go
index db3ac59..e1fde7f 100644
--- a/http.go
+++ b/http.go
@@ -90,7 +90,11 @@
 	if len(p.peers) == 0 {
 		return nil, false
 	}
-	if peer := p.peers[int(h)%len(p.peers)]; peer != p.self {
+	n := int(h)
+	if n < 0 {
+		n *= -1
+	}
+	if peer := p.peers[n%len(p.peers)]; peer != p.self {
 		// TODO: pre-build a slice of *httpGetter when Set()
 		// is called to avoid these two allocations.
 		return &httpGetter{p.Transport, peer + p.basePath}, true