diff --git a/VERSION b/VERSION
index da86f30..337b234 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.303
+1.0.304
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 07ca4c4..b0b32ea 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -1131,6 +1131,10 @@
 	./custom/scripts/fix_spice_includes.py ${EF_FORMAT} \
 		${STAGING_PATH}/${SKY130$*}/libs.tech/ngspice/all.spice \
 		2>&1 | tee -a ${SKY130$*}_make.log || true
+	# Custom:  Add the PNP 3.4x3.4um device model to the includes in "montecarlo.spice"
+	./custom/scripts/fix_spice_includes2.py ${EF_FORMAT} \
+		${STAGING_PATH}/${SKY130$*}/libs.tech/ngspice/parameters/montecarlo.spice \
+		2>&1 | tee -a ${SKY130$*}_make.log || true
 	# Custom:  Parse the (commented out) statistics blocks and generate
 	# ngspice-compatible monte carlo parameters for mismatch and process
 	./custom/scripts/mismatch_params.py ${EF_FORMAT} -variant=${SKY130$*} \
diff --git a/sky130/custom/scripts/fix_spice_includes2.py b/sky130/custom/scripts/fix_spice_includes2.py
new file mode 100755
index 0000000..bf75604
--- /dev/null
+++ b/sky130/custom/scripts/fix_spice_includes2.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python3
+#
+#--------------------------------------------------------------------
+# fix_spice_includes2.py---
+#
+# This script patches the "montecarlo.spice" file to add include
+# statements for devices that got left out (namely one of the PNP
+# devices). 
+#--------------------------------------------------------------------
+
+import os
+import re
+import sys
+
+newbjts = []
+newbjts.append('sky130_fd_pr__pnp_05v5_W3p40L3p40')
+
+newvars = []
+newvars.append('sky130_fd_pr__cap_var_hvt')
+
+options = []
+arguments = []
+for item in sys.argv[1:]:
+    if item.find('-', 0) == 0:
+        options.append(item[1:])
+    else:
+        arguments.append(item)
+
+if len(arguments) < 1:
+    print('Usage: fix_spice_includes.py <path_to_file> [-ef_format]')
+    sys.exit(1)
+
+else:
+    infile_name = arguments[0]
+
+    libpath = 'sky130_fd_pr/spice/'
+    if len(options) > 0:
+        if options[0] == 'ef_format':
+            libpath = 'spi/sky130_fd_pr/'
+
+    filepath = os.path.split(infile_name)[0]
+    filename = os.path.split(infile_name)[1]
+    fileroot = os.path.split(filename)[0]
+    outfile_name = os.path.join(filepath, fileroot + '_temp')
+
+    infile = open(infile_name, 'r')
+    outfile = open(outfile_name, 'w')
+
+    line_number = 0
+    replaced_something = False
+    for line in infile:
+        line_number += 1
+
+        if 'include' in line:
+            if '__pnp_05v5' in line:
+                # Insert these additional lines
+                for newbjt in newbjts:
+                    newline = '.include "../../../libs.ref/' + libpath + newbjt + '.model.spice"\n'
+                    outfile.write(newline)
+                replaced_something = True
+            elif '__cap_var_lvt' in line:
+                # Insert these additional lines
+                for newvar in newvars:
+                    newline = '.include "../../../libs.ref/' + libpath + newvar + '.model.spice"\n'
+                    outfile.write(newline)
+                replaced_something = True
+
+        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)
+
