diff --git a/servers/slapd/config.c b/servers/slapd/config.c
index 8d5544183def6690f1005d663978c4607d4d98b2..b462046dd73086fa2366323905237f34e75170f7 100644
--- a/servers/slapd/config.c
+++ b/servers/slapd/config.c
@@ -853,18 +853,20 @@ verbs_to_mask(int argc, char *argv[], slap_verbmasks *v, slap_mask_t *m) {
  */
 int
 mask_to_verbs(slap_verbmasks *v, slap_mask_t m, BerVarray *bva) {
-	int i;
-
-	if (!m) return 1;
-	for (i=0; !BER_BVISNULL(&v[i].word); i++) {
-		if (!v[i].mask) continue;
-		if (( m & v[i].mask ) == v[i].mask ) {
-			value_add_one( bva, &v[i].word );
-			m ^= v[i].mask;
-			if ( !m ) break;
+	int i, rc = 1;
+
+	if (m) {
+		for (i=0; !BER_BVISNULL(&v[i].word); i++) {
+			if (!v[i].mask) continue;
+			if (( m & v[i].mask ) == v[i].mask ) {
+				value_add_one( bva, &v[i].word );
+				rc = 0;
+				m ^= v[i].mask;
+				if ( !m ) break;
+			}
 		}
 	}
-	return 0;
+	return rc;
 }
 
 int