--- /dev/null
+--- a/editors/awk.c
++++ b/editors/awk.c
+@@ -2046,27 +2046,27 @@
+ break;
+
+ case B_an:
+- setvar_i(res, (long)getvar_i(av[0]) & (long)getvar_i(av[1]));
++ setvar_i(res, (unsigned long)getvar_i(av[0]) & (unsigned long)getvar_i(av[1]));
+ break;
+
+ case B_co:
+- setvar_i(res, ~(long)getvar_i(av[0]));
++ setvar_i(res, ~(unsigned long)getvar_i(av[0]));
+ break;
+
+ case B_ls:
+- setvar_i(res, (long)getvar_i(av[0]) << (long)getvar_i(av[1]));
++ setvar_i(res, (unsigned long)getvar_i(av[0]) << (unsigned long)getvar_i(av[1]));
+ break;
+
+ case B_or:
+- setvar_i(res, (long)getvar_i(av[0]) | (long)getvar_i(av[1]));
++ setvar_i(res, (unsigned long)getvar_i(av[0]) | (unsigned long)getvar_i(av[1]));
+ break;
+
+ case B_rs:
+- setvar_i(res, (long)((unsigned long)getvar_i(av[0]) >> (unsigned long)getvar_i(av[1])));
++ setvar_i(res, (unsigned long)getvar_i(av[0]) >> (unsigned long)getvar_i(av[1]));
+ break;
+
+ case B_xo:
+- setvar_i(res, (long)getvar_i(av[0]) ^ (long)getvar_i(av[1]));
++ setvar_i(res, (unsigned long)getvar_i(av[0]) ^ (unsigned long)getvar_i(av[1]));
+ break;
+
+ case B_lo: