diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/ModelLoader.java b/src/main/java/gov/usgs/earthquake/nshmp/model/ModelLoader.java
index f8c6756a807f3a1526dea3320fe4914e1155097f..8a93b27a8a259d4cfa8b3818c4d7aa116deb57cb 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/ModelLoader.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/ModelLoader.java
@@ -868,7 +868,12 @@ abstract class ModelLoader {
 
         /* Expect one or more geojson polygon files. */
         data.gridFeatureMap(ModelFiles.readGridFeatures(dir).orElseThrow());
-        LogicTree<Path> rateTree = data.gridRateTree().orElseThrow();
+
+        /*
+         * Path based gridRateTree may be used on multiple branches; we
+         * therefore need to use a copy because graph won't support edge reuse.
+         */
+        LogicTree<Path> rateTree = MfdTrees.copy(data.gridRateTree().orElseThrow());
         treeBuilder.addBranches(branch, rateTree);
 
         for (Branch<Path> rateBranch : rateTree) {