diff --git a/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingReaderHazardCurves.java b/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingReaderHazardCurves.java
index 4257bc91f11fb088e370664d67bfd1350e8c6310..91a58a36bb94092b8e75ad3125743131a643b77f 100644
--- a/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingReaderHazardCurves.java
+++ b/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingReaderHazardCurves.java
@@ -124,21 +124,24 @@ public class BoundingReaderHazardCurves extends BoundingReader<StaticDataHazardC
       for (int iImt = 0; iImt < netcdfData.imts().size(); iImt++) {
         var imt = netcdfData.imts().get(iImt);
 
-        // Build origin array, e.g [0, imt, siteClass]
-        var origin = netcdf.netcdfShape().buildShape()
+        // origin array builder, e.g [0, imt, siteClass]
+        var originBuilder = netcdf.netcdfShape().buildShape()
             .add(IndexKey.IML, 0)
-            .add(IndexKey.IMT, iImt)
-            .add(IndexKey.SITE_CLASS, iSiteClass)
-            .reduce()
-            .build();
+            .add(IndexKey.IMT, iImt);
 
-        // Build shape array, e.g. [nIML, 1, 1]
-        var shape = netcdf.netcdfShape().buildShape()
+        // shape array builder, e.g. [nIML, 1, 1]
+        var shapeBuilder = netcdf.netcdfShape().buildShape()
             .add(IndexKey.IML, netcdfData.nIml())
-            .add(IndexKey.IMT, 1)
-            .add(IndexKey.SITE_CLASS, 1)
-            .reduce()
-            .build();
+            .add(IndexKey.IMT, 1);
+
+        // Only add index for siteClass if this is not a singleton dimension
+        if (netcdfData.siteClasses().size() > 1) {
+          originBuilder.add(IndexKey.SITE_CLASS, iSiteClass);
+          shapeBuilder.add(IndexKey.SITE_CLASS, 1);
+        }
+
+        var origin = originBuilder.reduce().build();
+        var shape = shapeBuilder.reduce().build();
 
         try {
           var xySequence = XySequence.create(