diff --git a/vp10/encoder/encodeframe.c b/vp10/encoder/encodeframe.c
index c5a68a9e5da34903d27ae302551740da395dbf8a..c66be39de7a41aa775f589fba538262e387ce334 100644
--- a/vp10/encoder/encodeframe.c
+++ b/vp10/encoder/encodeframe.c
@@ -1654,6 +1654,7 @@ static void rd_pick_sb_modes(VP10_COMP *cpi,
                                    totalrate_nocoef,
 #endif  // CONFIG_SUPERTX
                                    bsize, ctx, best_rd);
+        assert(*totalrate_nocoef >= 0);
       }
     } else {
       vp10_rd_pick_inter_mode_sub8x8(cpi, tile_data, x, mi_row, mi_col, rd_cost,
@@ -1661,6 +1662,7 @@ static void rd_pick_sb_modes(VP10_COMP *cpi,
                                      totalrate_nocoef,
 #endif  // CONFIG_SUPERTX
                                      bsize, ctx, best_rd);
+      assert(*totalrate_nocoef >= 0);
     }
   }
 
diff --git a/vp10/encoder/rdopt.c b/vp10/encoder/rdopt.c
index 6543b339f9e6f2f0d89b7f3145132b46273d3267..830761dbd4125c32cb24c5fcd6d4945e88008e64 100644
--- a/vp10/encoder/rdopt.c
+++ b/vp10/encoder/rdopt.c
@@ -8333,11 +8333,12 @@ void vp10_rd_pick_inter_mode_sb(VP10_COMP *cpi,
 
         rd_cost->rate = rate2;
 #if CONFIG_SUPERTX
-        *returnrate_nocoef = rate2 - rate_y - rate_uv;
-        if (!disable_skip) {
-          *returnrate_nocoef -= vp10_cost_bit(vp10_get_skip_prob(cm, xd),
-                                              skippable || this_skip2);
-        }
+        if (x->skip && rate_y == INT_MAX)
+          *returnrate_nocoef = rate2;
+        else
+          *returnrate_nocoef = rate2 - rate_y - rate_uv;
+        *returnrate_nocoef -= vp10_cost_bit(vp10_get_skip_prob(cm, xd),
+            disable_skip || skippable || this_skip2);
         *returnrate_nocoef -= vp10_cost_bit(vp10_get_intra_inter_prob(cm, xd),
                                             mbmi->ref_frame[0] != INTRA_FRAME);
 #if CONFIG_OBMC