diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..5d731d0b5e27c6f4a3cd2dc4a5dfda9b68eaaefa
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..243dd30785bdb831d983ced301e1721d3d1658d6
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.11240],
+      [-65.00000, -0.11240]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 6",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 12.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 25.0
+  }
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a0def60f99a8bcba9a16458e10af5bef3facaa92
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..a73986cc0228f42c40bd93f41e92352d9fd47180
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case4-mfd": [
+    {
+      "id": "set2-case5",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 6.0,
+        "rate": 0.016042517
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..8862312f5526e683e63374711b58a4f92c2fc421
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case4",
+  "id": 1,
+  "mfd-tree": "set2-case4-mfd"
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault-sources/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/gmm-config.json b/etc/peer/models/Set2-Case5a/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..dfe80f5535a5d8001d7091b5d2f5f443a0feae47
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case5a/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..3220a64469196a9f2c77fed2ef7d8c66319c41c7
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case5a/calc-config.json b/etc/peer/models/Set2-Case5a/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..dbf6ba9e846ef2bff8ba85ee2331553def9dd2f0
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "PEER_MIXTURE_REFERENCE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0,
+        1.25, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 7.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case5a/model-info.json b/etc/peer/models/Set2-Case5a/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..b802ee2bdd5ebde3cea1591308347a07dcc95440
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case5a",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case5a/sites.csv b/etc/peer/models/Set2-Case5a/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..a89656bccce20189ff44b4224bc46e1010589184
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/sites.csv
@@ -0,0 +1,2 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault6-Site1,-65.13490, 0.00000,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..5d731d0b5e27c6f4a3cd2dc4a5dfda9b68eaaefa
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..243dd30785bdb831d983ced301e1721d3d1658d6
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.11240],
+      [-65.00000, -0.11240]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 6",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 12.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 25.0
+  }
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a0def60f99a8bcba9a16458e10af5bef3facaa92
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..a73986cc0228f42c40bd93f41e92352d9fd47180
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case4-mfd": [
+    {
+      "id": "set2-case5",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 6.0,
+        "rate": 0.016042517
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..8862312f5526e683e63374711b58a4f92c2fc421
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case4",
+  "id": 1,
+  "mfd-tree": "set2-case4-mfd"
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault-sources/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/gmm-config.json b/etc/peer/models/Set2-Case5b/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..dfe80f5535a5d8001d7091b5d2f5f443a0feae47
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case5b/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..3220a64469196a9f2c77fed2ef7d8c66319c41c7
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case5b/calc-config.json b/etc/peer/models/Set2-Case5b/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..205538ec8fd30df0c48029cc7e34bf4d87e28952
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "PEER_MIXTURE_MODEL",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0,
+        1.25, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 7.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case5b/model-info.json b/etc/peer/models/Set2-Case5b/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..a452ae4494b6d8fc08d7027dd95ea43ac9c4f550
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case5b",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case5b/sites.csv b/etc/peer/models/Set2-Case5b/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..a89656bccce20189ff44b4224bc46e1010589184
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/sites.csv
@@ -0,0 +1,2 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault6-Site1,-65.13490, 0.00000,760,false,0.048,0.607
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTests.java
index 5c8b7109832259936d7f9fe2dce0a53b7a4011de..a29b7fb77b92f7a4f0667cbfe55bd05fb19d8d6f 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTests.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTests.java
@@ -49,6 +49,12 @@ import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3c
 import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3c_Fast;
 import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3d;
 import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3d_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case4a;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case4a_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case4b;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case4b_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case5a;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case5b;
 
 class PeerTests {
 
@@ -353,54 +359,48 @@ class PeerTests {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case4a.class)
-  // @DisplayName("Set2 Case4a")
-  // final void set2Case4a(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case4a_Fast.class)
-  // @DisplayName("Set2 Case4a Fast")
-  // final void set2Case4aF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case4b.class)
-  // @DisplayName("Set2 Case4b")
-  // final void set2Case4b(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case4b_Fast.class)
-  // @DisplayName("Set2 Case4b Fast")
-  // final void set2Case4bF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case5a.class)
-  // @DisplayName("Set2 Case5a")
-  // final void set2Case5a(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case5b.class)
-  // @DisplayName("Set2 Case5b")
-  // final void set2Case5b(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case4a.class)
+  @DisplayName("Set2 Case4a")
+  final void set2Case4a(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case4a_Fast.class)
+  @DisplayName("Set2 Case4a Fast")
+  final void set2Case4aF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case4b.class)
+  @DisplayName("Set2 Case4b")
+  final void set2Case4b(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case4b_Fast.class)
+  @DisplayName("Set2 Case4b Fast")
+  final void set2Case4bF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case5a.class)
+  @DisplayName("Set2 Case5a")
+  final void set2Case5a(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case5b.class)
+  @DisplayName("Set2 Case5b")
+  final void set2Case5b(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
 
 }