diff --git a/src/encode.c b/src/encode.c
index 4f61d6dc6ff1a8ecef545201d06e8d730dba00b7..4d1b31040dcd56fe034893d92d4cf2911d905e75 100644
--- a/src/encode.c
+++ b/src/encode.c
@@ -1011,7 +1011,9 @@ static void encode_value2(struct svalue *val, struct encode_data *data, int forc
 	{
 	  int has_local_c_methods = 0;
 	  for (d = 0; d < p->num_identifiers; d++) {
-	    if (IDENTIFIER_IS_C_FUNCTION(p->identifiers[d].identifier_flags)) {
+	    struct identifier *id = p->identifiers + d;
+	    if (IDENTIFIER_IS_C_FUNCTION(id->identifier_flags) &&
+		!low_is_variant_dispatcher(id)) {
 	      has_local_c_methods = 1;
 	      break;
 	    }