diff --git a/lang/m2/comp/chk_expr.c b/lang/m2/comp/chk_expr.c
index 02c831485..8e7f30c42 100644
--- a/lang/m2/comp/chk_expr.c
+++ b/lang/m2/comp/chk_expr.c
@@ -1415,6 +1415,13 @@ ChkCast(expp)
 	if (arg->nd_class == Value) {
 		*expp = *arg;
 		free_node(arg);
+		if (lefttype->tp_fund == T_SET) {
+			/* User deserves what he gets here ... */
+			arith val = expp->nd_INT;
+
+			expp->nd_set = MkSet((unsigned)(lefttype->tp_size));
+			expp->nd_set[0] = val;
+		}
 	}
 	else {
 		expp->nd_symb = CAST;