diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/Gmm.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/Gmm.java
index 576dc2802472e64d3c41f0e0f9b9636bd71c8c45..ccda396eb237c85f036eb9b77aa25042f0d12f01 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/Gmm.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/Gmm.java
@@ -547,6 +547,13 @@ public enum Gmm {
       KuehnEtAl_2020.COEFFS,
       KuehnEtAl_2020.CONSTRAINTS_INTERFACE),
 
+  /** @see KuehnEtAl_2020 */
+  KBCG_20_SEATTLE_INTERFACE_BASIN(
+      KuehnEtAl_2020.SeattleInterfaceBasinNoM9.class,
+      KuehnEtAl_2020.SeattleInterfaceBasinNoM9.NAME,
+      KuehnEtAl_2020.COEFFS,
+      KuehnEtAl_2020.CONSTRAINTS_INTERFACE),
+
   /** @see KuehnEtAl_2020 */
   KBCG_20_CASCADIA_SLAB_BASIN(
       KuehnEtAl_2020.CascadiaSlabBasin.class,
@@ -1430,6 +1437,7 @@ public enum Gmm {
             KBCG_20_CASCADIA_INTERFACE,
             KBCG_20_CASCADIA_SLAB,
             KBCG_20_CASCADIA_INTERFACE_BASIN,
+            KBCG_20_SEATTLE_INTERFACE_BASIN,
             KBCG_20_SEATTLE_M9_INTERFACE_BASIN,
             KBCG_20_CASCADIA_SLAB_BASIN,
             KBCG_20_ALASKA_INTERFACE,
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/KuehnEtAl_2020.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/KuehnEtAl_2020.java
index e8579665bd42dbebd3607d29747956799f0a96c6..e1d5bcef0c149a88d79ba3547b402d9e83f12c18 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/KuehnEtAl_2020.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/KuehnEtAl_2020.java
@@ -234,16 +234,18 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
   /* Only true for interface */
   abstract boolean seattle();
 
+  abstract boolean seattleNoM9();
+
   @Override
   public LogicTree<GroundMotion> calc(GmmInput in) {
 
     double pgaRef = exp(calcPgaRef(coeffsPGA, in.Mw, in.rRup, in.zTor));
-    double μ = calcMean(coeffs, slab(), basin(), seattle(),
+    double μ = calcMean(coeffs, slab(), basin(), seattle(), seattleNoM9(),
         in.Mw, in.rRup, in.zTor, in.vs30, in.z2p5, pgaRef);
 
     // short periods can't be lower than PGA
     if (coeffs.imt.isSA() && coeffs.imt.period() <= 0.1) {
-      double μPga = calcMean(coeffsPGA, slab(), basin(), seattle(),
+      double μPga = calcMean(coeffsPGA, slab(), basin(), seattle(), seattleNoM9(),
           in.Mw, in.rRup, in.zTor, in.vs30, in.z2p5, pgaRef);
       μ = max(μ, μPga);
     }
@@ -277,6 +279,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
       boolean slab,
       boolean basin,
       boolean seattle,
+      boolean seattleNoM9,
       double Mw,
       double rRup,
       double zTor,
@@ -289,7 +292,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
     double fDepth = depthTerm(c, zTor);
     double fAtten = arcCrossingTerm(c, rRup);
     double fSite = siteAmpTerm(c, vs30, pgaRef);
-    double fBasin = basinTerm(c, vs30, z2p5, slab, basin, seattle);
+    double fBasin = basinTerm(c, vs30, z2p5, slab, basin, seattle, seattleNoM9);
 
     return c.θ1 + fMag + fGeom + fDepth + fAtten + fSite + fBasin;
   }
@@ -364,7 +367,8 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
       double z2p5,
       boolean slab,
       boolean basin,
-      boolean seattle) {
+      boolean seattle,
+      boolean seattleNoM9) {
 
     if (Double.isNaN(z2p5)) {
       return 0.0;
@@ -379,10 +383,17 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
     }
 
     double fb = 0.0;
-    if (basin && seattle) {
+
+    if (seattle) {
       fb = c.θ11S;
-      if (!slab && z2p5 > 6.0 && (c.imt.isSA() && c.imt.period() > 1.9)) {
-        fb = log(2.0); // M9 scaling
+      if (!seattleNoM9) {
+        if (!slab && z2p5 > 6.0 && (c.imt.isSA() && c.imt.period() > 1.9)) {
+          fb = log(2.0); // M9 scaling
+        }
+      }
+      if (basin) {
+        // need to scale because independent of δlnZ
+        fb *= GmmUtils.deltaZ25scale(c.imt, z2p5);
       }
     } else {
       fb = Math.min(c.θ11 + c.θ12 * δlnZ, c.θ11S); // Seattle cap
@@ -422,6 +433,11 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
     boolean seattle() {
       return false;
     }
+
+    @Override
+    boolean seattleNoM9() {
+      return false;
+    }
   }
 
   private static abstract class Cascadia extends KuehnEtAl_2020 {
@@ -446,6 +462,11 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
     boolean seattle() {
       return false;
     }
+
+    @Override
+    boolean seattleNoM9() {
+      return false;
+    }
   }
 
   private static abstract class Alaska extends KuehnEtAl_2020 {
@@ -470,6 +491,11 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
     boolean seattle() {
       return false;
     }
+
+    @Override
+    boolean seattleNoM9() {
+      return false;
+    }
   }
 
   static class GlobalInterface extends Global {
@@ -545,6 +571,30 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
     }
   }
 
+  @Deprecated // for demo purposes only
+  static final class SeattleInterfaceBasinNoM9 extends CascadiaInterface {
+    static final String NAME = CascadiaInterface.NAME + " (Seattle basin)";
+
+    SeattleInterfaceBasinNoM9(Imt imt) {
+      super(imt);
+    }
+
+    @Override
+    boolean basin() {
+      return true;
+    }
+
+    @Override
+    boolean seattle() {
+      return true;
+    }
+
+    @Override
+    boolean seattleNoM9() {
+      return true;
+    }
+  }
+
   static final class CascadiaSlabBasin extends CascadiaSlab {
     static final String NAME = CascadiaSlab.NAME + " (basin)";