diff --git a/src/multiset.c b/src/multiset.c
index 02a5c8a345b5f1de1b1a0e5c6f6c149bddd4ad55..2561c10451df7966c78f3b52fdf505466ed72e2f 100644
--- a/src/multiset.c
+++ b/src/multiset.c
@@ -1339,7 +1339,8 @@ static union msnode *low_multiset_find_eq (struct multiset *l, struct svalue *ke
 
       if (TYPEOF(msd->cmp_less) == T_INT) {
 	struct svalue tmp;
-	if (!(msd->ind_types & (BIT_OBJECT | BIT_FUNCTION))) {
+	if (!((msd->ind_types | (1 << TYPEOF(*key))) &
+	      (BIT_OBJECT | BIT_FUNCTION))) {
 	  /* Can assume an internal order which defines a total order
 	   * for all values. */
 	  LOW_RB_FIND (