diff --git a/av1/encoder/compound_type.c b/av1/encoder/compound_type.c
index 14660ff..6594bce 100644
--- a/av1/encoder/compound_type.c
+++ b/av1/encoder/compound_type.c
@@ -1355,9 +1355,8 @@
       int best_rs2 = 0;
       int best_rate_mv = *rate_mv;
       const int wedge_mask_size = get_wedge_types_lookup(bsize);
-      int ref_frame = av1_ref_frame_type(mbmi->ref_frame);
-      int need_mask_search = args->wedge_index[ref_frame] == -1 ||
-                             !have_newmv_in_inter_mode(this_mode);
+      int need_mask_search =
+          args->wedge_index == -1 || !have_newmv_in_inter_mode(this_mode);
 
       for (int wedge_mask = 0; wedge_mask < wedge_mask_size && need_mask_search;
            ++wedge_mask) {
@@ -1400,19 +1399,19 @@
 
       if (need_mask_search) {
         if (have_newmv_in_inter_mode(this_mode)) {
-          args->wedge_index[ref_frame] = best_mask_index;
-          args->wedge_sign[ref_frame] = best_wedge_sign;
+          args->wedge_index = best_mask_index;
+          args->wedge_sign = best_wedge_sign;
         }
       } else {
-        mbmi->interinter_comp.wedge_index = args->wedge_index[ref_frame];
-        mbmi->interinter_comp.wedge_sign = args->wedge_sign[ref_frame];
+        mbmi->interinter_comp.wedge_index = args->wedge_index;
+        mbmi->interinter_comp.wedge_sign = args->wedge_sign;
         rs2 = masked_type_cost[cur_type];
         rs2 += get_interinter_compound_mask_rate(&x->mode_costs, mbmi);
         tmp_rate_mv = av1_interinter_compound_motion_search(cpi, x, cur_mv,
                                                             bsize, this_mode);
 
-        best_mask_index = args->wedge_index[ref_frame];
-        best_wedge_sign = args->wedge_sign[ref_frame];
+        best_mask_index = args->wedge_index;
+        best_wedge_sign = args->wedge_sign;
         tmp_mv[0] = mbmi->mv[0];
         tmp_mv[1] = mbmi->mv[1];
         best_rate_mv = tmp_rate_mv;
diff --git a/av1/encoder/interp_search.h b/av1/encoder/interp_search.h
index 69b6a36..9a6dcfa 100644
--- a/av1/encoder/interp_search.h
+++ b/av1/encoder/interp_search.h
@@ -126,11 +126,11 @@
   /*!
    * Estimated wedge index.
    */
-  int wedge_index[MODE_CTX_REF_FRAMES];
+  int wedge_index;
   /*!
    * Estimated wedge sign.
    */
-  int wedge_sign[MODE_CTX_REF_FRAMES];
+  int wedge_sign;
   /*!
    * Estimated diff wtd index.
    */
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 862726d..622793f 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -5348,13 +5348,9 @@
                                interintra_modes,
                                { { { 0 }, { { 0 } }, { 0 }, 0, 0, 0, 0 } },
                                0,
-                               { 0 },
-                               { 0 },
+                               -1,
+                               -1,
                                0 };
-  for (i = 0; i < MODE_CTX_REF_FRAMES; ++i) {
-    args.wedge_index[i] = -1;
-    args.wedge_sign[i] = -1;
-  }
   // Indicates the appropriate number of simple translation winner modes for
   // exhaustive motion mode evaluation
   const int max_winner_motion_mode_cand =
