diff --git a/VERSION b/VERSION
index 03dfe29..fa8ad76 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.364
+1.0.365
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 727de74..a0cfd35 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -1407,6 +1407,7 @@
 			rename=primitives filter=custom/scripts/inc_verilog.py \
 			sort=../common/sort_pdkfiles.py \
 		-verilog %l/latest/cells/*/*.*.v \
+			filter=custom/scripts/fix_verilog.py \
 		-verilog %l/latest/cells/*/*.v exclude=*.*.v,primitives.v \
 			compile-only filter=custom/scripts/inc_verilog.py \
 			sort=../common/sort_pdkfiles.py \
diff --git a/sky130/custom/scripts/fix_verilog.py b/sky130/custom/scripts/fix_verilog.py
new file mode 100755
index 0000000..90162f0
--- /dev/null
+++ b/sky130/custom/scripts/fix_verilog.py
@@ -0,0 +1,91 @@
+#!/usr/bin/env python3
+#
+# fix_verilog ---
+#
+# The script catches an error in the lpflow_bleeder cell where a
+# comment is missing after an `endif.
+#
+# This script is a filter to be run by setting the name of this script as
+# the value to "filter=" for the model install in the sky130 Makefile.
+
+import re
+import os
+import sys
+
+def filter(inname, outname):
+
+    # Read input
+    try:
+        with open(inname, 'r') as inFile:
+            vtext = inFile.read()
+            vlines = vtext.splitlines()
+    except:
+        print('fix_verilog.py: failed to open ' + inname + ' for reading.', file=sys.stderr)
+        return 1
+
+    # Check if input file is a base cell or strength-specific cell, and
+    # check if it has a "specify" block file.  To enable this, change
+    # dospecify from False to True.
+    dospecify = False
+
+    # Process input with regexp
+
+    fixedlines = []
+    modified = False
+    endifrex = re.compile('[ \t]*`endif[ \t]+SKY')
+
+    for line in vlines:
+        ematch = endifrex.match(line)
+        if ematch:
+            fixedlines.append(line.replace('endif SKY', 'endif // SKY'))
+            modified = True
+        else:
+            fixedlines.append(line)
+
+    # Write output
+    if outname == None:
+        for i in fixedlines:
+            print(i)
+    else:
+        # If the output is a symbolic link but no modifications have been made,
+        # then leave it alone.  If it was modified, then remove the symbolic
+        # link before writing.
+        if os.path.islink(outname):
+            if not modified:
+                return 0
+            else:
+                os.unlink(outname)
+        try:
+            with open(outname, 'w') as outFile:
+                for i in fixedlines:
+                    print(i, file=outFile)
+        except:
+            print('fix_verilog.py: failed to open ' + outname + ' for writing.', file=sys.stderr)
+            return 1
+
+
+if __name__ == '__main__':
+
+    # This script expects to get one or two arguments.  One argument is
+    # mandatory and is the input file.  The other argument is optional and
+    # is the output file.  The output file and input file may be the same
+    # name, in which case the original input is overwritten.
+
+    options = []
+    arguments = []
+    for item in sys.argv[1:]:
+        if item.find('-', 0) == 0:
+            options.append(item[1:])
+        else:
+            arguments.append(item)
+
+    if len(arguments) > 0:
+        infilename = arguments[0]
+
+    if len(arguments) > 1:
+        outfilename = arguments[1]
+    else:
+        outfilename = None
+
+    result = filter(infilename, outfilename)
+    sys.exit(result)
