diff --git a/database b/database
index f7f8375..0ee729d 160000
--- a/database
+++ b/database
@@ -1 +1 @@
-Subproject commit f7f8375101dfa7f7d5ccb654ff8fcae73356ce48
+Subproject commit 0ee729d20eaf9f1e0f1d657bc6452e3ffe6a0d63
diff --git a/fuzzers/machxo2/051-pio_attrs/fuzzer.py b/fuzzers/machxo2/051-pio_attrs/fuzzer.py
index 9185f61..0d976d5 100644
--- a/fuzzers/machxo2/051-pio_attrs/fuzzer.py
+++ b/fuzzers/machxo2/051-pio_attrs/fuzzer.py
@@ -60,6 +60,30 @@
             "side": "T",
             "pins": [("28", "C"), ("27", "D")]
         },
+
+        {
+            "cfg": FuzzConfig(job="PICRS0_IO", family="MachXO2", device="LCMXO2-1200HC",
+                        ncl="empty.ncl", tiles=["PR3:PIC_RS0"]),
+            "side": "R",
+            "pins": [("71", "A"), ("70", "B")],
+            "package": "TQFP100"
+        },
+
+        {
+            "cfg": FuzzConfig(job="PICLS0_IO", family="MachXO2", device="LCMXO2-1200HC",
+                        ncl="empty.ncl", tiles=["PL9:PIC_LS0"]),
+            "side": "L",
+            "pins": [("20", "A"), ("21", "B")],
+            "package": "TQFP100"
+        },
+
+        {
+            "cfg": FuzzConfig(job="PICL0VREF_IO", family="MachXO2", device="LCMXO2-1200HC",
+                        ncl="empty.ncl", tiles=["PL4:PIC_L0_VREF3"]),
+            "side": "L",
+            "pins": [("11", "A"), ("12", "B"), ("13", "C"), ("14", "D")],
+            "package": "TQFP144"
+        },
 ]
 
 # Function constructed from reading the MachXO2 sysIO Usage Guide.
diff --git a/fuzzers/machxo2/052-pio_fixup/fuzzer.py b/fuzzers/machxo2/052-pio_fixup/fuzzer.py
index 0bdf954..ee07d94 100644
--- a/fuzzers/machxo2/052-pio_fixup/fuzzer.py
+++ b/fuzzers/machxo2/052-pio_fixup/fuzzer.py
@@ -4,7 +4,10 @@
 def main():
     pytrellis.load_database("../../../database")
     dbfixup.remove_enum_bits("MachXO2", "LCMXO2-1200HC", "PIC_L0", (29, 11))
+    dbfixup.remove_enum_bits("MachXO2", "LCMXO2-1200HC", "PIC_LS0", (29, 11))
+    dbfixup.remove_enum_bits("MachXO2", "LCMXO2-1200HC", "PIC_L0_VREF3", (29, 11))
     dbfixup.remove_enum_bits("MachXO2", "LCMXO2-1200HC", "PIC_R0", (29, 59), (0, 48))
+    dbfixup.remove_enum_bits("MachXO2", "LCMXO2-1200HC", "PIC_RS0", (29, 59), (0, 48))
 
 if __name__ == "__main__":
     main()
diff --git a/libtrellis/src/Bels.cpp b/libtrellis/src/Bels.cpp
index 64a9025..5111c8a 100644
--- a/libtrellis/src/Bels.cpp
+++ b/libtrellis/src/Bels.cpp
@@ -753,9 +753,9 @@
         bel.loc.y = y;
         bel.z = z;
 
-        graph.add_bel_input(bel, graph.ident("CLKI"), x, y, graph.ident(fmt("G_CLKI" << name << "_DCC")));
-        graph.add_bel_input(bel, graph.ident("CE"), x, y, graph.ident(fmt("G_JCE" << name << "_DCC")));
-        graph.add_bel_output(bel, graph.ident("CLKO"), x, y, graph.ident(fmt("G_CLKO" << name << "_DCC")));
+        graph.add_bel_input(bel, graph.ident("CLKI"), x, y, graph.ident(fmt("G_CLKI" << z << "_DCC")));
+        graph.add_bel_input(bel, graph.ident("CE"), x, y, graph.ident(fmt("G_JCE" << z << "_DCC")));
+        graph.add_bel_output(bel, graph.ident("CLKO"), x, y, graph.ident(fmt("G_CLKO" << z << "_DCC")));
 
         graph.add_bel(bel);
     }
diff --git a/util/fuzz/dbfixup.py b/util/fuzz/dbfixup.py
index 734522f..885849d 100644
--- a/util/fuzz/dbfixup.py
+++ b/util/fuzz/dbfixup.py
@@ -56,15 +56,14 @@
     for enum in db.get_settings_enums():
         fixed_enum = pytrellis.EnumSettingBits()
 
-        for option in db.get_data_for_enum(enum).options:
-            key = option.key()
+        for (option, data) in db.get_data_for_enum(enum).options.items():
             fixed_bg = pytrellis.BitGroup()
 
-            for bit in option.data().bits:
+            for bit in data.bits:
                 if in_bounding_box(bit):
                     fixed_bg.bits.add(bit)
 
-            fixed_enum.options[key] = fixed_bg
+            fixed_enum.options[option] = fixed_bg
 
         fixed_enum.name = db.get_data_for_enum(enum).name
         fixed_enum.defval = db.get_data_for_enum(enum).defval
