diff --git a/VERSION b/VERSION
index 0bc56ce..8e8f9d4 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.212
+1.0.213
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index d08e32d..8af2b50 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -881,6 +881,17 @@
 	./custom/scripts/xyce_hack.py \
 		${STAGING_PATH}/${SKY130A}/libs.ref/${PR_SPICE}/sky130_fd_pr__res_iso_pw.model.spice \
 		2>&1 | tee -a ${SKY130A}_make.log || true
+	# Custom:  Remove ACM model parameters from BSIM3 devices
+	./custom/scripts/xyce_hack2.py \
+		${STAGING_PATH}/${SKY130A}/libs.ref/${PR_SPICE}/sky130_fd_pr__special_nfet_pass.pm3.spice \
+		2>&1 | tee -a ${SKY130A}_make.log || true
+	./custom/scripts/xyce_hack2.py \
+		${STAGING_PATH}/${SKY130A}/libs.ref/${PR_SPICE}/sky130_fd_pr__special_pfet_pass.pm3.spice \
+		2>&1 | tee -a ${SKY130A}_make.log || true
+	./custom/scripts/xyce_hack2.py \
+		${STAGING_PATH}/${SKY130A}/libs.ref/${PR_SPICE}/sky130_fd_pr__special_nfet_latch.pm3.spice \
+		2>&1 | tee -a ${SKY130A}_make.log || true
+
 	# Custom:  Make corrections/additions so sky130.lib.spice
 	./custom/scripts/build_lib_spice.py \
 		${STAGING_PATH}/${SKY130A}/libs.tech/ngspice/sky130.lib.spice \
diff --git a/sky130/custom/scripts/xyce_hack2.py b/sky130/custom/scripts/xyce_hack2.py
new file mode 100755
index 0000000..5d8f1a0
--- /dev/null
+++ b/sky130/custom/scripts/xyce_hack2.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python3
+#
+#--------------------------------------------------------------------
+# Workaround for the problem that xyce does not ignore ACM model
+# parameters passed to bsim3 models, and throws an error.  These
+# parameters have no known effect on simulation and therefore
+# should be removed.
+#--------------------------------------------------------------------
+
+import os
+import re
+import sys
+
+plist = ["ldif", "hdif", "rd", "rs", "rsc", "rdc", "nqsmod"]
+regexps = []
+for parm in plist:
+    regexps.append(re.compile('^\+[ \t]*' + parm + '[ \t]*=[ \t]*0.0', re.IGNORECASE))
+
+if len(sys.argv) <= 1:
+    print('Usage: xyce_hack2.py <path_to_file>')
+    sys.exit(1)
+
+else:
+    infile_name = sys.argv[1]
+
+    filepath = os.path.split(infile_name)[0]
+    outfile_name = os.path.join(filepath, 'temp')
+
+    infile = open(infile_name, 'r')
+    outfile = open(outfile_name, 'w')
+
+    line_number = 0
+    replaced_something = False
+    for line in infile:
+        line_number += 1
+
+        for rex in regexps:
+            rmatch = rex.match(line)
+            if rmatch:
+                # If a match is found, comment out the line.
+                replaced_something = True
+                break
+
+        if rmatch:
+            newline = re.sub('^\+', '* +', line)
+        else:
+            newline = line
+
+        outfile.write(newline)
+
+    infile.close()
+    outfile.close()
+    if replaced_something:
+        print("Something was replaced in '{}'".format(infile_name))
+        os.rename(outfile_name, infile_name)
+    else:
+        print("Nothing was replaced in '{}'.".format(infile_name))
+        os.remove(outfile_name)
+
