diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index d61de44..949cf86 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -353,14 +353,14 @@
 vendor-a:
 	# Install device subcircuits from vendor files
 	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
-		-ngspice sky130_fd_pr/latest/models/* filter=custom/scripts/rename.py \
+		-ngspice sky130_fd_pr/latest/models/* filter=custom/scripts/rename_models.py \
 		|& tee -a ${SKY130A}_install.log
 	# Install base device library from vendor files
 	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
 		-gds %l/latest/cells/*/*.gds compile-only \
 		-cdl %l/latest/cells/*/*.cdl compile-only \
 		-lef %l/latest/cells/*/*.magic.lef compile-only \
-		-spice %l/latest/cells/*/*.spice \
+		-spice %l/latest/cells/*/*.spice filter=custom/scripts/rename_cells.py \
 		-library primitive sky130_fd_pr |& tee -a ${SKY130A}_install.log
 	# Install SkyWater I/O pad library
 	# Purposely ignoring "-lef sky130_fd_io/latest/lef/*.lef" and making our own LEF views
diff --git a/sky130/custom/scripts/rename.py b/sky130/custom/scripts/rename_cells.py
similarity index 75%
copy from sky130/custom/scripts/rename.py
copy to sky130/custom/scripts/rename_cells.py
index ebef2ea..1daa8ea 100755
--- a/sky130/custom/scripts/rename.py
+++ b/sky130/custom/scripts/rename_cells.py
@@ -1,10 +1,10 @@
 #!/bin/env python3
 #
-# rename ---
+# rename_cells ---
 #
-# This script renames include paths from SPICE files in the models
-# (libs.tech/ngspice) directory that point to the original ../cells/
-# directory, to point to the correct location in libs.ref/sky130_fd_pr/spice/
+# This script renames include paths from SPICE files in the cells
+# (libs.ref/sky130_fd_pr) directory that point to other cells
+# directories, to point to the correct location in libs.ref/sky130_fd_pr/spice/
 #
 #
 # This script is a filter to be run by setting the name of this script as
@@ -22,7 +22,7 @@
             spitext = inFile.read()
             spilines = spitext.splitlines()
     except:
-        print('rename.py: failed to open ' + fnmIn + ' for reading.', file=sys.stderr)
+        print('rename_cells.py: failed to open ' + fnmIn + ' for reading.', file=sys.stderr)
         return 1
 
     # Process input with regexp
@@ -32,8 +32,9 @@
 
     for line in spilines:
 
-        # Fix: Replace "../cells/<name>/" with "../../libs.ref/sky130_fd_pr/spice/"
-        fixedline = re.sub('../cells/[^/]+/', '../../libs.ref/sky130_fd_pr/spice/', line)
+        # These substitutions are for files originating from cells/*/*.spice
+        fixedline = re.sub('\.\./\.\./models/', '../../libs.tech/ngspice/', line)
+        fixedline = re.sub('\.\./[^/\.]+/', '', fixedline)
 
         fixedlines.append(fixedline)
         if fixedline != line:
@@ -57,7 +58,7 @@
                 for i in fixedlines:
                     print(i, file=outFile)
         except:
-            print('rename.py: failed to open ' + outname + ' for writing.', file=sys.stderr)
+            print('rename_cells.py: failed to open ' + outname + ' for writing.', file=sys.stderr)
             return 1
 
 
diff --git a/sky130/custom/scripts/rename.py b/sky130/custom/scripts/rename_models.py
similarity index 87%
rename from sky130/custom/scripts/rename.py
rename to sky130/custom/scripts/rename_models.py
index ebef2ea..1be4c2b 100755
--- a/sky130/custom/scripts/rename.py
+++ b/sky130/custom/scripts/rename_models.py
@@ -1,6 +1,6 @@
 #!/bin/env python3
 #
-# rename ---
+# rename_models ---
 #
 # This script renames include paths from SPICE files in the models
 # (libs.tech/ngspice) directory that point to the original ../cells/
@@ -22,7 +22,7 @@
             spitext = inFile.read()
             spilines = spitext.splitlines()
     except:
-        print('rename.py: failed to open ' + fnmIn + ' for reading.', file=sys.stderr)
+        print('rename_models.py: failed to open ' + fnmIn + ' for reading.', file=sys.stderr)
         return 1
 
     # Process input with regexp
@@ -33,8 +33,7 @@
     for line in spilines:
 
         # Fix: Replace "../cells/<name>/" with "../../libs.ref/sky130_fd_pr/spice/"
-        fixedline = re.sub('../cells/[^/]+/', '../../libs.ref/sky130_fd_pr/spice/', line)
-
+        fixedline = re.sub('\.\./cells/[^/]+/', '../../libs.ref/sky130_fd_pr/spice/', line)
         fixedlines.append(fixedline)
         if fixedline != line:
             modified = True
@@ -57,7 +56,7 @@
                 for i in fixedlines:
                     print(i, file=outFile)
         except:
-            print('rename.py: failed to open ' + outname + ' for writing.', file=sys.stderr)
+            print('rename_models.py: failed to open ' + outname + ' for writing.', file=sys.stderr)
             return 1
 
 
