diff --git a/ChangeLog b/ChangeLog
index 0ce9029..bf37ae5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+Tue Aug  9 13:07:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
+
+	* xmlregexp.c xmlschemas.c: trying to nail down the remaining
+	  ##other issues
+	* result/schemas/any7* test/schemas/any7: completed the tests
+	  and added the results
+	* result/schemas/any3_0_0.err result/schemas/any5_0_0.err
+	  result/schemas/any5_1_0.err: this slightly chnages the output
+	  from 3 existing tests
+
 Mon Aug  8 22:33:08 CEST 2005 Daniel Veillard <daniel@veillard.com>
 
 	* nanoftp.c nanohttp.c xmlschemastypes.c: applied patch from 
diff --git a/result/schemas/any3_0_0.err b/result/schemas/any3_0_0.err
index 19036ce..49ce581 100644
--- a/result/schemas/any3_0_0.err
+++ b/result/schemas/any3_0_0.err
@@ -1 +1 @@
-./test/schemas/any3_0.xml:12: element bar.A: Schemas validity error : Element 'bar.A': This element is not expected. Expected is one of ( {##other:http://FOO}* ).
+./test/schemas/any3_0.xml:12: element bar.A: Schemas validity error : Element 'bar.A': This element is not expected. Expected is ( ##other{http://FOO}* ).
diff --git a/result/schemas/any5_0_0.err b/result/schemas/any5_0_0.err
index 137229b..b69fd57 100644
--- a/result/schemas/any5_0_0.err
+++ b/result/schemas/any5_0_0.err
@@ -1 +1 @@
-./test/schemas/any5_0.xml:6: element boo: Schemas validity error : Element '{urn:test:foo}boo': This element is not expected. Expected is ( not {urn:test:foo}* ).
+./test/schemas/any5_0.xml:6: element boo: Schemas validity error : Element '{urn:test:foo}boo': This element is not expected. Expected is ( ##other{urn:test:foo}* ).
diff --git a/result/schemas/any5_1_0.err b/result/schemas/any5_1_0.err
index 137229b..b69fd57 100644
--- a/result/schemas/any5_1_0.err
+++ b/result/schemas/any5_1_0.err
@@ -1 +1 @@
-./test/schemas/any5_0.xml:6: element boo: Schemas validity error : Element '{urn:test:foo}boo': This element is not expected. Expected is ( not {urn:test:foo}* ).
+./test/schemas/any5_0.xml:6: element boo: Schemas validity error : Element '{urn:test:foo}boo': This element is not expected. Expected is ( ##other{urn:test:foo}* ).
diff --git a/result/schemas/any7_1_0 b/result/schemas/any7_1_0
new file mode 100644
index 0000000..cfd9dcc
--- /dev/null
+++ b/result/schemas/any7_1_0
@@ -0,0 +1 @@
+./test/schemas/any7_0.xml fails to validate
diff --git a/result/schemas/any7_1_0.err b/result/schemas/any7_1_0.err
new file mode 100644
index 0000000..a4274f8
--- /dev/null
+++ b/result/schemas/any7_1_0.err
@@ -0,0 +1 @@
+./test/schemas/any7_0.xml:18: element moo: Schemas validity error : Element 'moo': This element is not expected. Expected is ( ##other{urn:test:foo}* ).
diff --git a/result/schemas/any7_1_1 b/result/schemas/any7_1_1
new file mode 100644
index 0000000..2a6f5d7
--- /dev/null
+++ b/result/schemas/any7_1_1
@@ -0,0 +1 @@
+./test/schemas/any7_1.xml fails to validate
diff --git a/result/schemas/any7_1_1.err b/result/schemas/any7_1_1.err
new file mode 100644
index 0000000..8745468
--- /dev/null
+++ b/result/schemas/any7_1_1.err
@@ -0,0 +1 @@
+./test/schemas/any7_1.xml:17: element bar: Schemas validity error : Element '{urn:test:foo}bar': This element is not expected. Expected is ( ##other{urn:test:foo}* ).
diff --git a/result/schemas/any7_2_0 b/result/schemas/any7_2_0
new file mode 100644
index 0000000..cfd9dcc
--- /dev/null
+++ b/result/schemas/any7_2_0
@@ -0,0 +1 @@
+./test/schemas/any7_0.xml fails to validate
diff --git a/result/schemas/any7_2_0.err b/result/schemas/any7_2_0.err
new file mode 100644
index 0000000..a4274f8
--- /dev/null
+++ b/result/schemas/any7_2_0.err
@@ -0,0 +1 @@
+./test/schemas/any7_0.xml:18: element moo: Schemas validity error : Element 'moo': This element is not expected. Expected is ( ##other{urn:test:foo}* ).
diff --git a/result/schemas/any7_2_1 b/result/schemas/any7_2_1
new file mode 100644
index 0000000..2a6f5d7
--- /dev/null
+++ b/result/schemas/any7_2_1
@@ -0,0 +1 @@
+./test/schemas/any7_1.xml fails to validate
diff --git a/result/schemas/any7_2_1.err b/result/schemas/any7_2_1.err
new file mode 100644
index 0000000..8745468
--- /dev/null
+++ b/result/schemas/any7_2_1.err
@@ -0,0 +1 @@
+./test/schemas/any7_1.xml:17: element bar: Schemas validity error : Element '{urn:test:foo}bar': This element is not expected. Expected is ( ##other{urn:test:foo}* ).
diff --git a/test/schemas/any7_0.xml b/test/schemas/any7_0.xml
index d8f23d2..288b1e7 100755
--- a/test/schemas/any7_0.xml
+++ b/test/schemas/any7_0.xml
@@ -16,4 +16,4 @@
 	xsi:schemaLocation="urn:test:foo any-2_1.xsd">
 	<foo:bar/>
 	<moo/>
-</foo:foo>
\ No newline at end of file
+</foo:foo>
diff --git a/test/schemas/any7_2.xsd b/test/schemas/any7_2.xsd
new file mode 100755
index 0000000..cabfd98
--- /dev/null
+++ b/test/schemas/any7_2.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	targetNamespace="urn:test:foo"
+	elementFormDefault="qualified">
+	<xs:element name="foo">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="bar"/>
+				<xs:any namespace="##other" processContents="lax" maxOccurs="2"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>
diff --git a/xmlregexp.c b/xmlregexp.c
index 700b886..cf5f942 100644
--- a/xmlregexp.c
+++ b/xmlregexp.c
@@ -246,6 +246,7 @@
     xmlRegCounter *counters;
 
     int determinist;
+    int negs;
 };
 
 struct _xmlRegexp {
@@ -419,6 +420,7 @@
 
     if ((ret->determinist != 0) &&
 	(ret->nbCounters == 0) &&
+	(ctxt->negs == 0) &&
 	(ret->atoms != NULL) &&
 	(ret->atoms[0] != NULL) &&
 	(ret->atoms[0]->type == XML_REGEXP_STRING)) {
@@ -661,6 +663,7 @@
 	ret->string = xmlStrdup(string);
     ret->cur = ret->string;
     ret->neg = 0;
+    ret->negs = 0;
     ret->error = 0;
     ret->determinist = -1;
     return(ret);
@@ -1902,8 +1905,9 @@
 	default:
 	    return(1);
     }
-    if (atom1->neg != atom2->neg)
+    if (atom1->neg != atom2->neg) {
         ret = !ret;
+    }
     return(ret);
 }
 
@@ -2903,19 +2907,20 @@
 }
 
 /**
- * xmlRegExecPushString:
+ * xmlRegExecPushStringInternal:
  * @exec: a regexp execution context or NULL to indicate the end
  * @value: a string token input
  * @data: data associated to the token to reuse in callbacks
+ * @compound: value was assembled from 2 strings
  *
  * Push one input token in the execution context
  *
  * Returns: 1 if the regexp reached a final state, 0 if non-final, and
  *     a negative value in case of error.
  */
-int
-xmlRegExecPushString(xmlRegExecCtxtPtr exec, const xmlChar *value,
-	             void *data) {
+static int
+xmlRegExecPushStringInternal(xmlRegExecCtxtPtr exec, const xmlChar *value,
+	                     void *data, int compound) {
     xmlRegTransPtr trans;
     xmlRegAtomPtr atom;
     int ret;
@@ -3057,8 +3062,11 @@
 		break;
 	    } else if (value != NULL) {
 		ret = xmlRegStrEqualWildcard(atom->valuep, value);
-		if (atom->neg)
+		if (atom->neg) {
 		    ret = !ret;
+		    if (!compound)
+		        ret = 0;
+		}
 		if ((ret == 1) && (trans->counter >= 0)) {
 		    xmlRegCounterPtr counter;
 		    int count;
@@ -3258,6 +3266,23 @@
 }
 
 /**
+ * xmlRegExecPushString:
+ * @exec: a regexp execution context or NULL to indicate the end
+ * @value: a string token input
+ * @data: data associated to the token to reuse in callbacks
+ *
+ * Push one input token in the execution context
+ *
+ * Returns: 1 if the regexp reached a final state, 0 if non-final, and
+ *     a negative value in case of error.
+ */
+int
+xmlRegExecPushString(xmlRegExecCtxtPtr exec, const xmlChar *value,
+	             void *data) {
+    return(xmlRegExecPushStringInternal(exec, value, data, 0));
+}
+
+/**
  * xmlRegExecPushString2:
  * @exec: a regexp execution context or NULL to indicate the end
  * @value: the first string token input
@@ -3306,7 +3331,7 @@
     if (exec->comp->compact != NULL)
 	ret = xmlRegCompactPushString(exec, exec->comp, str, data);
     else
-        ret = xmlRegExecPushString(exec, str, data);
+        ret = xmlRegExecPushStringInternal(exec, str, data, 1);
 
     if (str != buf)
         xmlFree(buf);
@@ -4917,6 +4942,8 @@
  * If @to is NULL, this creates first a new target state in the automata
  * and then adds a transition from the @from state to the target state
  * activated by any value except (@token,@token2)
+ * Note that if @token2 is not NULL, then (X, NULL) won't match to follow
+ # the semantic of XSD ##other
  *
  * Returns the target state or NULL in case of error
  */
@@ -4963,6 +4990,7 @@
         xmlRegFreeAtom(atom);
 	return(NULL);
     }
+    am->negs++;
     if (to == NULL)
 	return(am->state);
     return(to);
diff --git a/xmlschemas.c b/xmlschemas.c
index 3ee5563..7a016a2 100644
--- a/xmlschemas.c
+++ b/xmlschemas.c
@@ -1935,7 +1935,7 @@
 	        (cur[3] == ' ')) {
 	        is_not = 1;
 		cur += 4;
-		str = xmlStrcat(str, BAD_CAST "not ");
+		str = xmlStrcat(str, BAD_CAST "##other");
 	    } else {
 	        is_not = 0;
 	    }
@@ -11137,20 +11137,9 @@
 		    } while (ns != NULL);
 
 		} else if (wild->negNsSet != NULL) {
-
-		    /*
-		    * Lead nodes with the negated namespace to the sink-state
-		    * {"*", "##other"}.
-		    */
-		    pctxt->state = xmlAutomataNewTransition2(pctxt->am, start, NULL,
-			BAD_CAST "*", wild->negNsSet->value, wild);
-		    /*
-		    * Open a door for nodes with any other namespace
-		    * {"*", "*"}
-		    */
-		    pctxt->state = xmlAutomataNewTransition2(pctxt->am,
-			start, NULL, BAD_CAST "*", BAD_CAST "*", wild);
-		    xmlAutomataNewEpsilon(pctxt->am, pctxt->state, end);
+		    pctxt->state = xmlAutomataNewNegTrans(pctxt->am,
+			start, end, BAD_CAST "*", wild->negNsSet->value,
+			wild);
 		}
 	    } else {
 		int counter;
