diff --git a/daffodil-cli/src/test/scala-cli/edu/illinois/ncsa/daffodil/saving/TestCLISaveParser.scala b/daffodil-cli/src/test/scala-cli/edu/illinois/ncsa/daffodil/saving/TestCLISaveParser.scala
index 05152c1..6dabd0e 100644
--- a/daffodil-cli/src/test/scala-cli/edu/illinois/ncsa/daffodil/saving/TestCLISaveParser.scala
+++ b/daffodil-cli/src/test/scala-cli/edu/illinois/ncsa/daffodil/saving/TestCLISaveParser.scala
@@ -421,4 +421,26 @@
       shell.close()
     }
   }
+
+  @Test def test_3941_CLI_Saving_SaveParser_tunables() {
+    val schemaFile = Util.daffodilPath("daffodil-test/src/test/resources/edu/illinois/ncsa/daffodil/section00/general/generalSchema.dfdl.xsd")
+    val inputFile = Util.daffodilPath("daffodil-cli/src/test/resources/edu/illinois/ncsa/daffodil/CLI/input/input12.txt")
+    val (testSchemaFile, testInputFile) = if (Util.isWindows) (Util.cmdConvert(schemaFile), Util.cmdConvert(inputFile)) else (schemaFile, inputFile)
+
+    val shell = Util.start("", true)
+
+    try {
+      String.format("%s save-parser -s %s -r e1 -T parseUnparsePolicy=parseOnly %s", Util.binPath, testSchemaFile, savedParserFile.getName()) !
+
+      val cmd = String.format("%s unparse --parser %s %s", Util.binPath, savedParserFile.getName(), testInputFile)
+      shell.sendLine(cmd)
+      shell.expect(contains("[error]"))
+      shell.expect(contains("Runtime Schema Definition Error: This schema was compiled without unparse support."))
+      shell.sendLine("exit")
+      shell.expect(eof())
+    } finally {
+      shell.close()
+    }
+  }
+
 }
diff --git a/daffodil-lib/src/main/scala/edu/illinois/ncsa/daffodil/api/DaffodilTunables.scala b/daffodil-lib/src/main/scala/edu/illinois/ncsa/daffodil/api/DaffodilTunables.scala
index ae4a50d..2f8b9fa 100644
--- a/daffodil-lib/src/main/scala/edu/illinois/ncsa/daffodil/api/DaffodilTunables.scala
+++ b/daffodil-lib/src/main/scala/edu/illinois/ncsa/daffodil/api/DaffodilTunables.scala
@@ -185,7 +185,7 @@
       case "minbinarydecimalvirtualpoint" => this.copy(minBinaryDecimalVirtualPoint = java.lang.Integer.valueOf(value))
       case "generatednamespaceprefixstem" => this.copy(generatedNamespacePrefixStem = value)
       case "readerbytebuffersize" => this.copy(readerByteBufferSize = java.lang.Long.valueOf(value))
-      case "parseUnparsePolicy" => {
+      case "parseunparsepolicy" => {
         val policy = value.toLowerCase match {
           case "parseonly" => Some(ParseUnparsePolicy.ParseOnly)
           case "unparseonly" => Some(ParseUnparsePolicy.UnparseOnly)
diff --git a/daffodil-test/src/test/resources/edu/illinois/ncsa/daffodil/section00/general/tunables.tdml b/daffodil-test/src/test/resources/edu/illinois/ncsa/daffodil/section00/general/tunables.tdml
index fa1fff5..4b9f884 100644
--- a/daffodil-test/src/test/resources/edu/illinois/ncsa/daffodil/section00/general/tunables.tdml
+++ b/daffodil-test/src/test/resources/edu/illinois/ncsa/daffodil/section00/general/tunables.tdml
@@ -157,4 +157,29 @@
 		</tdml:errors>
 	</tdml:parserTestCase>
 
+	<!-- Test name: unqualifiedPathStepPolicy_defaultNamespace_test_02
+	     Schema: unqualifiedPathStepPolicy
+	     Purpose: Verify that Tunables now work when specified via TDML.
+	-->
+	<tdml:parserTestCase
+		name="unqualifiedPathStepPolicy_defaultNamespace_test_02" root="test_02"
+		model="unqualifiedPathStep" description="Tunables - Unqualified Path Step Policy"
+		config="cfg_defaultNamespace">
+
+		<tdml:document>
+			<tdml:documentPart type="text">12</tdml:documentPart>
+		</tdml:document>
+
+		<tdml:infoset>
+			<tdml:dfdlInfoset>
+				<test_02 xmlns="http://example.com">
+					<ex:a>
+						<ex:b>1</ex:b>
+						<c>2</c>
+					</ex:a>
+					<s>1</s>
+				</test_02>
+			</tdml:dfdlInfoset>
+		</tdml:infoset>
+	</tdml:parserTestCase>
 </tdml:testSuite>
diff --git a/daffodil-test/src/test/scala/edu/illinois/ncsa/daffodil/section00/general/TestGeneral.scala b/daffodil-test/src/test/scala/edu/illinois/ncsa/daffodil/section00/general/TestGeneral.scala
index 2637e7d..574a673 100644
--- a/daffodil-test/src/test/scala/edu/illinois/ncsa/daffodil/section00/general/TestGeneral.scala
+++ b/daffodil-test/src/test/scala/edu/illinois/ncsa/daffodil/section00/general/TestGeneral.scala
@@ -118,5 +118,6 @@
   // DFDL-1143
   @Test def test_unqualifiedPathStepPolicy_defaultNamespace_test_01() { tunables_runner.runOneTest("unqualifiedPathStepPolicy_defaultNamespace_test_01") }
   @Test def test_unqualifiedPathStepPolicy_noNamespace_test_02() { tunables_runner.runOneTest("unqualifiedPathStepPolicy_noNamespace_test_02") }
+  @Test def test_unqualifiedPathStepPolicy_defaultNamespace_test_02() { tunables_runner.runOneTest("unqualifiedPathStepPolicy_defaultNamespace_test_02") }
 
 }
