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 91a58a36bb94092b8e75ad3125743131a643b77f..35e8ee44eeb6505225d6a72b23ec6ccea26ae80b 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
@@ -2,7 +2,9 @@ package gov.usgs.earthquake.nshmp.netcdf.reader;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.stream.Collectors;
 
+import gov.usgs.earthquake.nshmp.Maths;
 import gov.usgs.earthquake.nshmp.data.XySequence;
 import gov.usgs.earthquake.nshmp.geo.Location;
 import gov.usgs.earthquake.nshmp.netcdf.Netcdf;
@@ -26,6 +28,8 @@ import ucar.nc2.dataset.NetcdfDatasets;
  */
 public class BoundingReaderHazardCurves extends BoundingReader<StaticDataHazardCurves> {
 
+  private static final double FILL_VALUE = 9999.9;
+
   public BoundingReaderHazardCurves(NetcdfHazardCurves netcdf, Location site) {
     super(netcdf, site);
   }
@@ -148,7 +152,14 @@ public class BoundingReaderHazardCurves extends BoundingReader<StaticDataHazardC
               netcdfData.imls().get(imt),
               (double[]) hazards.section(origin, shape).reduce().get1DJavaArray(DataType.DOUBLE));
 
-          imtHazardMap.put(imt, xySequence);
+          var points = xySequence.stream()
+              .filter(xy -> Maths.round(xy.x(), 1) != FILL_VALUE)
+              .collect(Collectors.toList());
+
+          var xs = points.stream().map(xy -> xy.x()).collect(Collectors.toList());
+          var ys = points.stream().map(xy -> xy.y()).collect(Collectors.toList());
+
+          imtHazardMap.put(imt, XySequence.create(xs, ys));
         } catch (InvalidRangeException e) {
           throw new RuntimeException(e.getMessage());
         }