--- ick-0.27/src/dekludge.c	2007-12-22 09:22:14.000000000 +0000
+++ latest/src/dekludge.c	2008-01-03 14:10:58.000000000 +0000
@@ -139,6 +139,8 @@
   /* ignorable holds whether a variable's ignorance status can change */
   for (tp = tuples; tp < tuples + lineno; tp++)
   {
+    /* allow for warnings to be generated during flow optimisations */
+    optuple = tp; /* Patch by Joris Huizer */
     if(tp->maybe) tp->abstainable = 1;
     if(tp->exechance < 0) tp->initabstain = 1;
     if(tp->exechance != 100 && tp->exechance != -100) tp->abstainable = 1;
--- ick-0.27/src/idiotism.oil	2007-12-22 09:22:14.000000000 +0000
+++ latest/src/idiotism.oil	2008-01-03 14:07:15.000000000 +0000
@@ -207,15 +207,15 @@
 <#0-#14
 ((_{c<=65535&&!(c&((1LU<<r)-1LU))}1$
   #{!(x&(4294967294LU<<r))}2)~#{!(x&(1431655765LU<<(r*2+2)))}3)
-->((((_1>>#{r}0)&#{iselect(x3>>(r*2+1),1431655765LU)}0)
+->((((_1>>#{r}0)~#{iselect(x3>>(r*2+1),1431655765LU)}0)
     <<#{setbitcount(x3&((2LU<<(r*2))-1))}0)|#{iselect(mingle(0,x2),x3)}0)
 (((_{c<=65535&&!(c&((1LU<<r)-1LU))}1|#{x<=65535&&!(c&~((1LU<<r)-1LU))}4)$
   #{!(x&(4294967294LU<<r))}2)~#{!(x&(1431655765LU<<(r*2+2)))}3)
-->((((_1>>#{r}0)&#{iselect(x3>>(r*2+1),1431655765LU)}0)
+->((((_1>>#{r}0)~#{iselect(x3>>(r*2+1),1431655765LU)}0)
     <<#{setbitcount(x3&((2LU<<(r*2))-1))}0)|#{iselect(mingle(x4,x2),x3)}0)
 (((#{x<=65535&&!(c&~((1LU<<r)-1LU))}4|_{c<=65535&&!(c&((1LU<<r)-1LU))}1)$
   #{!(x&(4294967294LU<<r))}2)~#{!(x&(1431655765LU<<(r*2+2)))}3)
-->((((_1>>#{r}0)&#{iselect(x3>>(r*2+1),1431655765LU)}0)
+->((((_1>>#{r}0)~#{iselect(x3>>(r*2+1),1431655765LU)}0)
     <<#{setbitcount(x3&((2LU<<(r*2))-1))}0)|#{iselect(mingle(x4,x2),x3)}0)
 >
 ; 32-bit leftshift by 1; there are 8 ways to write this.
@@ -480,8 +480,8 @@
 (_1|#0)->(_1)
 (#0|_1)->(_1)
 [noopxor]
-(_1|#0)->(_1)
-(#0|_1)->(_1)
+(_1^#0)->(_1)
+(#0^_1)->(_1)
 [anditself]
 (_1&_1)->(_1)
 [oritself]
--- ick-0.27/src/parser.y	2007-12-22 09:22:14.000000000 +0000
+++ latest/src/parser.y	2007-12-30 01:08:38.000000000 +0000
@@ -485,12 +485,15 @@
 		    $$->rval = newnode();
 		    $$->rval->opcode = $1;
 		    if($1 == MESH) {
-			    /* enforce the 16-bit constant constraint */
-			    if ((unsigned int)$3 > Max_small)
-				lose(E017, iyylineno, (char *)NULL);
-			    $$->rval->constant = intern(MESH, $3);
+		      /* enforce the 16-bit constant constraint */
+		      if ((unsigned int)$3 > Max_small)
+			lose(E017, iyylineno, (char *)NULL);
+		      if(variableconstants) /* AIS */
+			$$->rval->constant = intern(MESH, $2);
+		      else
+			$$->rval->constant = $2;
 		    }
 		    else {
-			$$->rval->constant = intern($1, $3);
+		      $$->rval->constant = intern($1, $3);
 		    }
 		}
