diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug318313.xml b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug318313.xml
new file mode 100644
index 0000000..af2dcc7
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug318313.xml
@@ -0,0 +1 @@
+<X>100</X>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug318313.xsd b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug318313.xsd
new file mode 100644
index 0000000..acc9b1e
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug318313.xsd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+    <xs:element name="X" type="xs:positiveInteger" />
+
+</xs:schema>
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestBugs.java b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestBugs.java
index c925614..43df338 100644
--- a/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestBugs.java
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestBugs.java
@@ -40,6 +40,8 @@
  *  Mukul Gandhi    - bug 309585   implementation of xs:normalizedString data type                             
  * Jesper S Moller  - bug 311480 - fix problem with name matching on keywords 
  * Jesper S Moller  - bug 312191 - instance of test fails with partial matches
+ *  Mukul Gandhi    - bug 318313 - improvements to computation of typed values of nodes,
+ *                                 when validated by XML Schema primitive types
  *******************************************************************************/
 package org.eclipse.wst.xml.xpath2.processor.test;
 
@@ -81,9 +83,6 @@
 
 	}
 
-	
-
-
 	public void testNamesWhichAreKeywords() throws Exception {
 		// Bug 273719
 		URL fileURL = bundle.getEntry("/bugTestFiles/bug311480.xml");
@@ -1716,22 +1715,6 @@
 		
 		assertTrue(testSuccess);
 	}
-
-	private CollationProvider createLengthCollatorProvider() {
-		return new CollationProvider() {
-			@SuppressWarnings("unchecked")
-			public Comparator get_collation(String name) {
-				if (name.equals(URN_X_ECLIPSE_XPATH20_FUNKY_COLLATOR)) {
-					return new Comparator<String>() {
-						public int compare(String o1, String o2) {
-							return o1.length() - o2.length();
-						}
-					};
-				}
-				return null;
-			}
-		};
-	}
 	
 	public void testParseElementKeywordsAsNodes() throws Exception {
 		// Bug 311480
@@ -1748,4 +1731,45 @@
 		XPath path = compileXPath(dc, xpath);
 	}
 	
+	public void testTypedValueEnhancement_primitiveTypes() throws Exception {
+		// Bug 318313
+		URL fileURL = bundle.getEntry("/bugTestFiles/bug318313.xml");
+		URL schemaURL = bundle.getEntry("/bugTestFiles/bug318313.xsd");
+
+		loadDOMDocument(fileURL, schemaURL);
+
+		// Get XSModel object for the Schema
+		XSModel schema = getGrammar(schemaURL);
+
+		DynamicContext dc = setupDynamicContext(schema);
+
+		String xpath = "X gt 99";
+		XPath path = compileXPath(dc, xpath);
+
+		Evaluator eval = new DefaultEvaluator(dc, domDoc);
+		ResultSequence rs = eval.evaluate(path);
+
+		XSBoolean result = (XSBoolean) rs.first();
+
+		String actual = result.string_value();
+
+		assertEquals("true", actual);
+	}
+	
+	private CollationProvider createLengthCollatorProvider() {
+		return new CollationProvider() {
+			@SuppressWarnings("unchecked")
+			public Comparator get_collation(String name) {
+				if (name.equals(URN_X_ECLIPSE_XPATH20_FUNKY_COLLATOR)) {
+					return new Comparator<String>() {
+						public int compare(String o1, String o2) {
+							return o1.length() - o2.length();
+						}
+					};
+				}
+				return null;
+			}
+		};
+	}
+	
 }
