diff --git a/hashset.c b/hashset.c
index d60ccc8..93c8d8c 100644
--- a/hashset.c
+++ b/hashset.c
@@ -80,6 +80,15 @@ hashset_allocate(int maxelements)
 	hashset_t  *set;
 	char	   *ptr;
 
+	/*
+	 * Ensure that maxelements is not divisible by 13;
+	 * i.e. the step size used in hashset_add_element()
+	 * and hashset_contains_element().
+	 */
+	while (maxelements % 13 == 0) {
+		maxelements++;
+	}
+
 	len = offsetof(hashset_t, data);
 	len += (maxelements + 7) / 8;
 	len += maxelements * sizeof(int32);
@@ -387,8 +396,6 @@ hashset_contains_element(hashset_t *set, int32 value)
 		/* move to the next element */
 		hash = (hash + 13) % set->maxelements;
 	}
-
-	return set;
 }
 
 Datum
