diff --git a/src/main/java/gov/usgs/earthquake/nshmp/calc/Site.java b/src/main/java/gov/usgs/earthquake/nshmp/calc/Site.java
index 3abfd2affca200b48f6c94771f3ced5d720003fd..8a90c3a02c56acef816033576804e603e481fe00 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/calc/Site.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/calc/Site.java
@@ -175,7 +175,7 @@ public class Site {
       double z1p0, double z2p5,
       double zSed) {
     return String.format(
-        "Vs30=%s %s Z1.0=%s Z2.5=%s Zsed=%s",
+        "vs30=%s %s z1.0=%s z2.5=%s zSed=%s",
         vs30, vsInf ? "inferred " : "measured ", z1p0, z2p5, zSed);
   }
 
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/GmmInput.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/GmmInput.java
index bc159b536161688040bfad3e1eb49c85840164b0..9f30ac78a1a0f3c6704e19c6d98df0edb881d7c3 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/GmmInput.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/GmmInput.java
@@ -380,14 +380,6 @@ public class GmmInput {
       return this;
     }
 
-    /**
-     * Set both the vs30 at site and whether {@code vs30} is inferred or
-     * measured.
-     */
-    public Builder vs30(double vs30, boolean vsInf) {
-      return vs30(vs30).vsInf(vsInf);
-    }
-
     /** Set the depth to 1.0 km/s (in km). */
     public Builder z1p0(double z1p0) {
       this.z1p0 = validateAndFlag(Z1P0, z1p0);
@@ -402,7 +394,7 @@ public class GmmInput {
 
     /** Set the sediment thickness (in km). */
     public Builder zSed(double zSed) {
-      this.z2p5 = validateAndFlag(ZSED, zSed);
+      this.zSed = validateAndFlag(ZSED, zSed);
       return this;
     }
 
@@ -449,7 +441,7 @@ public class GmmInput {
       .vsInf(VSINF.defaultValue > 0.0)
       .z1p0(Z1P0.defaultValue)
       .z2p5(Z2P5.defaultValue)
-      .z2p5(ZSED.defaultValue)
+      .zSed(ZSED.defaultValue)
       .build();
 
   /**
@@ -631,9 +623,9 @@ public class GmmInput {
     boolean z2p5Check = Double.isNaN(in.z2p5)
         ? Double.isNaN(this.z2p5)
         : this.z2p5 == in.z2p5;
-    boolean zSedCheck = Double.isNaN(in.z2p5)
-        ? Double.isNaN(this.z2p5)
-        : this.z2p5 == in.z2p5;
+    boolean zSedCheck = Double.isNaN(in.zSed)
+        ? Double.isNaN(this.zSed)
+        : this.zSed == in.zSed;
     return this.Mw == in.Mw &&
         this.rJB == in.rJB &&
         this.rRup == in.rRup &&
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/calc/SiteTests.java b/src/test/java/gov/usgs/earthquake/nshmp/calc/SiteTests.java
index f0283b2575f48fa6e9d7b91be0e28586d7dd4fa9..03bb085691f6463b1c15f4db31f013824839f333 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/calc/SiteTests.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/calc/SiteTests.java
@@ -16,11 +16,12 @@ class SiteTests {
   static final boolean VS_INF = false;
   static final double Z1P0 = 0.5;
   static final double Z2P5 = 3.0;
+  static final double ZSED = 7.5;
 
   static final String TO_STRING_VSINF_TRUE =
-      "Unnamed                     -118.000 34.000 Vs30=760.0 inferred  Z1.0=NaN Z2.5=NaN";
+      "Unnamed                     -118.000 34.000 vs30=760.0 inferred  z1.0=NaN z2.5=NaN zSed=NaN";
   static final String TO_STRING_VSINF_FALSE =
-      "TestSite                    -118.000 34.000 Vs30=530.0 measured  Z1.0=0.5 Z2.5=3.0";
+      "TestSite                    -118.000 34.000 vs30=530.0 measured  z1.0=0.5 z2.5=3.0 zSed=7.5";
 
   static Site.Builder siteBuilder() {
     return Site.builder()
@@ -29,7 +30,8 @@ class SiteTests {
         .vs30(VS_30)
         .vsInferred(VS_INF)
         .z1p0(Z1P0)
-        .z2p5(Z2P5);
+        .z2p5(Z2P5)
+        .zSed(ZSED);
   }
 
   @Test
@@ -43,6 +45,7 @@ class SiteTests {
     assertEquals(VS_INF, site1.vsInferred());
     assertEquals(Z1P0, site1.z1p0());
     assertEquals(Z2P5, site1.z2p5());
+    assertEquals(ZSED, site1.zSed());
 
     // check single use
     assertThrows(IllegalStateException.class, () -> {
@@ -55,10 +58,12 @@ class SiteTests {
     Site site3 = siteBuilder()
         .z1p0(Double.NaN)
         .z2p5(Double.NaN)
+        .zSed(Double.NaN)
         .build();
 
     assertEquals(Double.NaN, site3.z1p0());
     assertEquals(Double.NaN, site3.z2p5());
+    assertEquals(Double.NaN, site3.zSed());
 
     // named location
     NamedLocation loc = new NamedLocation() {
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/calc/SitesTests.java b/src/test/java/gov/usgs/earthquake/nshmp/calc/SitesTests.java
index e30b36cdf7f4222140d3468fc0955c5cf598c6ca..74e00ffdecebfc9c4bc2996f55ed760e378f4653 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/calc/SitesTests.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/calc/SitesTests.java
@@ -49,11 +49,11 @@ class SitesTests {
 
   static final String TO_STRING =
       "Sites [size=6]\n" +
-          "               Hilo HI                     -155.060 19.700 Vs30=760.0 inferred  Z1.0=NaN Z2.5=NaN\n" +
-          "               Salt Lake City UT           -111.900 40.750 Vs30=530.0 inferred  Z1.0=0.3 Z2.5=3.0\n" +
-          "               San Jose CA                 -121.900 37.350 Vs30=350.0 measured  Z1.0=NaN Z2.5=NaN\n" +
-          "               Seattle WA                  -122.300 47.600 Vs30=760.0 inferred  Z1.0=1.2 Z2.5=6.7\n" +
-          "               Memphis TN                  -90.050 35.150 Vs30=3000.0 inferred  Z1.0=NaN Z2.5=NaN\n" +
+          "               Hilo HI                     -155.060 19.700 vs30=760.0 inferred  z1.0=NaN z2.5=NaN zSed=NaN\n" +
+          "               Salt Lake City UT           -111.900 40.750 vs30=530.0 inferred  z1.0=0.3 z2.5=3.0 zSed=NaN\n" +
+          "               San Jose CA                 -121.900 37.350 vs30=350.0 measured  z1.0=NaN z2.5=NaN zSed=NaN\n" +
+          "               Seattle WA                  -122.300 47.600 vs30=760.0 inferred  z1.0=1.2 z2.5=6.7 zSed=NaN\n" +
+          "               Memphis TN                  -90.050 35.150 vs30=3000.0 inferred  z1.0=NaN z2.5=NaN zSed=NaN\n" +
           "               ... and 1 more ...";
 
 }
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/gmm/GmmInputTest.java b/src/test/java/gov/usgs/earthquake/nshmp/gmm/GmmInputTest.java
index e425d6f8c630dc8da6de6542c56e3aec27cf2e53..6d7fa401daa34b427b03afcf29418574743b1600 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/gmm/GmmInputTest.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/gmm/GmmInputTest.java
@@ -12,6 +12,7 @@ import static gov.usgs.earthquake.nshmp.gmm.GmmInput.Field.WIDTH;
 import static gov.usgs.earthquake.nshmp.gmm.GmmInput.Field.Z1P0;
 import static gov.usgs.earthquake.nshmp.gmm.GmmInput.Field.Z2P5;
 import static gov.usgs.earthquake.nshmp.gmm.GmmInput.Field.ZHYP;
+import static gov.usgs.earthquake.nshmp.gmm.GmmInput.Field.ZSED;
 import static gov.usgs.earthquake.nshmp.gmm.GmmInput.Field.ZTOR;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -46,6 +47,7 @@ class GmmInputTest {
   private static final double width = WIDTH.defaultValue;
   private static final double z1p0 = Z1P0.defaultValue;
   private static final double z2p5 = Z2P5.defaultValue;
+  private static final double zSed = ZSED.defaultValue;
   private static final double zHyp = ZHYP.defaultValue;
   private static final double zTor = ZTOR.defaultValue;
 
@@ -64,6 +66,7 @@ class GmmInputTest {
     VALUES.put(WIDTH, Double.toString(width));
     VALUES.put(Z1P0, Double.toString(z1p0));
     VALUES.put(Z2P5, Double.toString(z2p5));
+    VALUES.put(ZSED, Double.toString(zSed));
     VALUES.put(ZHYP, Double.toString(zHyp));
     VALUES.put(ZTOR, Double.toString(zTor));
   }
@@ -103,6 +106,7 @@ class GmmInputTest {
     assertEquals(gmmCopy.width, model.width, 0);
     assertEquals(gmmCopy.z1p0, model.z1p0, 0);
     assertEquals(gmmCopy.z2p5, model.z2p5, 0);
+    assertEquals(gmmCopy.zSed, model.zSed, 0);
     assertEquals(gmmCopy.zHyp, model.zHyp, 0);
     assertEquals(gmmCopy.zTor, model.zTor, 0);
   }
@@ -124,6 +128,7 @@ class GmmInputTest {
     gmmBuilder.set(WIDTH, Double.toString(val));
     gmmBuilder.set(Z1P0, Double.toString(val));
     gmmBuilder.set(Z2P5, Double.toString(val));
+    gmmBuilder.set(ZSED, Double.toString(val));
     gmmBuilder.set(ZHYP, Double.toString(val));
     gmmBuilder.set(ZTOR, Double.toString(val));
     GmmInput gmm = gmmBuilder.build();
@@ -139,6 +144,7 @@ class GmmInputTest {
     assertEquals(gmm.width, val, 0);
     assertEquals(gmm.z1p0, val, 0);
     assertEquals(gmm.z2p5, val, 0);
+    assertEquals(gmm.zSed, val, 0);
     assertEquals(gmm.zHyp, val, 0);
     assertEquals(gmm.zTor, val, 0);
 
@@ -163,6 +169,7 @@ class GmmInputTest {
     assertEquals(gmm.width, width, 0);
     assertEquals(gmm.z1p0, z1p0, 0);
     assertEquals(gmm.z2p5, z2p5, 0);
+    assertEquals(gmm.zSed, zSed, 0);
     assertEquals(gmm.zHyp, zHyp, 0);
     assertEquals(gmm.zTor, zTor, 0);
   }
@@ -199,6 +206,7 @@ class GmmInputTest {
         .vsInf(vsInf)
         .z1p0(z1p0)
         .z2p5(z2p5)
+        .zSed(zSed)
         .build();
 
     assertEquals(gmm.dip, dip, 0);
@@ -212,6 +220,7 @@ class GmmInputTest {
     assertEquals(gmm.width, width, 0);
     assertEquals(gmm.z1p0, z1p0, 0);
     assertEquals(gmm.z2p5, z2p5, 0);
+    assertEquals(gmm.zSed, zSed, 0);
     assertEquals(gmm.zHyp, zHyp, 0);
     assertEquals(gmm.zTor, zTor, 0);
   }
@@ -238,6 +247,7 @@ class GmmInputTest {
     assertFalse(gmm.equals(gmmBuilder.withDefaults().width(v).build()));
     assertFalse(gmm.equals(gmmBuilder.withDefaults().z1p0(v).build()));
     assertFalse(gmm.equals(gmmBuilder.withDefaults().z2p5(v).build()));
+    assertFalse(gmm.equals(gmmBuilder.withDefaults().zSed(v).build()));
     assertFalse(gmm.equals(gmmBuilder.withDefaults().zHyp(v).build()));
     assertFalse(gmm.equals(gmmBuilder.withDefaults().zTor(v).build()));
   }
@@ -247,7 +257,7 @@ class GmmInputTest {
     GmmInput gmm = GmmInput.builder().withDefaults().build();
     GmmInput gmmCopy = GmmInput.builder().fromCopy(gmm).build();
     GmmInput gmmDiff = GmmInput.builder().withDefaults()
-        .mag(10.0).z1p0(10.0).z2p5(10.0).build();
+        .mag(10.0).z1p0(10.0).z2p5(10.0).zSed(10.0).build();
 
     assertEquals(gmm.hashCode(), gmmCopy.hashCode());
     assertNotEquals(gmm.hashCode(), gmmDiff.hashCode());
@@ -271,6 +281,7 @@ class GmmInputTest {
     assertTrue(toString.contains("width="));
     assertTrue(toString.contains("z1p0="));
     assertTrue(toString.contains("z2p5="));
+    assertTrue(toString.contains("zSed="));
     assertTrue(toString.contains("zHyp="));
     assertTrue(toString.contains("zTor="));
     assertEquals(toString, toStringCopy);
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/gmm/GmmTest.java b/src/test/java/gov/usgs/earthquake/nshmp/gmm/GmmTest.java
index 13a1f3310a9e7cbb08381c20c4b91d83de3591a1..4c01320d9fde3b22ca87ea74d7b9eb0cc9564278 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/gmm/GmmTest.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/gmm/GmmTest.java
@@ -144,9 +144,11 @@ class GmmTest {
         .zTor(it.next())
         .zHyp(it.next())
         .rake(it.next())
-        .vs30(it.next(), it.next() > 0.0)
+        .vs30(it.next())
+        .vsInf(it.next() > 0.0)
         .z1p0(it.next())
         .z2p5(it.next())
+        .zSed(Double.NaN)
         .build();
   }