diff --git a/src/main/java/org/apache/neethi/builders/xml/XmlPrimitiveAssertion.java b/src/main/java/org/apache/neethi/builders/xml/XmlPrimitiveAssertion.java
index cd2e4e6..3dfbe02 100644
--- a/src/main/java/org/apache/neethi/builders/xml/XmlPrimitiveAssertion.java
+++ b/src/main/java/org/apache/neethi/builders/xml/XmlPrimitiveAssertion.java
@@ -187,6 +187,9 @@
                     writer.writeAttribute(name.getPrefix(), name.getNamespaceURI(),
                                            name.getLocalPart(), attr.getValue());
                 }
+                if (!n.getNamespaceURI().equals(writer.getNamespaceContext().getNamespaceURI(n.getPrefix()))) {
+                    writer.writeNamespace(n.getPrefix(), n.getNamespaceURI());
+                }
                 break;
             }
            
diff --git a/src/test/java/org/apache/neethi/BasicTestCases.java b/src/test/java/org/apache/neethi/BasicTestCases.java
index 8abb833..9306370 100644
--- a/src/test/java/org/apache/neethi/BasicTestCases.java
+++ b/src/test/java/org/apache/neethi/BasicTestCases.java
@@ -27,7 +27,9 @@
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
 import org.w3c.dom.Element;
@@ -173,4 +175,20 @@
         first.normalize(true);
         
     }
+
+    @Test
+    public void testPolicyWritingNamespaces() throws Exception {
+        for (int x = 0; x < 4; x++) {
+            Policy p = getPolicy("bugs/neethi15/input/Policy1.xml", x);
+            StringWriter sw = new StringWriter();
+            XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(sw);
+            p.serialize(writer);
+            writer.flush();
+            XMLStreamReader r = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(sw.toString()));
+            while (r.hasNext()) {
+                r.next();
+            }
+        }
+    }
+
 }
