diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index ab72ca9..2b3dde6 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -5098,8 +5098,6 @@
 
   av1_crc32c_calculator_init(&td->mb.mb_rd_record.crc_calculator);
 
-  td->intrabc_used_this_tile = 0;
-
   for (mi_row = tile_info->mi_row_start; mi_row < tile_info->mi_row_end;
        mi_row += cm->seq_params.mib_size) {
     av1_encode_sb_row(cpi, td, tile_row, tile_col, mi_row);
@@ -5121,10 +5119,11 @@
     for (tile_col = 0; tile_col < tile_cols; ++tile_col) {
       TileDataEnc *const this_tile =
           &cpi->tile_data[tile_row * cm->tile_cols + tile_col];
+      cpi->td.intrabc_used = 0;
       cpi->td.mb.e_mbd.tile_ctx = &this_tile->tctx;
       cpi->td.mb.backup_tile_ctx = &this_tile->backup_tctx;
       av1_encode_tile(cpi, &cpi->td, tile_row, tile_col);
-      cpi->intrabc_used |= cpi->td.intrabc_used_this_tile;
+      cpi->intrabc_used |= cpi->td.intrabc_used;
     }
   }
 }
@@ -6130,8 +6129,7 @@
   }
 
   if (!dry_run) {
-    if (av1_allow_intrabc(cm) && is_intrabc_block(mbmi))
-      td->intrabc_used_this_tile = 1;
+    if (av1_allow_intrabc(cm) && is_intrabc_block(mbmi)) td->intrabc_used = 1;
     if (cm->tx_mode == TX_MODE_SELECT && !xd->lossless[mbmi->segment_id] &&
         mbmi->sb_type > BLOCK_4X4 && !(is_inter && (mbmi->skip || seg_skip))) {
       if (is_inter) {
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 016daac..460293b 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -546,7 +546,7 @@
   PALETTE_BUFFER *palette_buffer;
   CONV_BUF_TYPE *tmp_conv_dst;
   uint8_t *tmp_obmc_bufs[2];
-  int intrabc_used_this_tile;
+  int intrabc_used;
   FRAME_CONTEXT *tctx;
 } ThreadData;
 
diff --git a/av1/encoder/ethread.c b/av1/encoder/ethread.c
index c0a3eea..7433c4a 100644
--- a/av1/encoder/ethread.c
+++ b/av1/encoder/ethread.c
@@ -286,7 +286,6 @@
 
     cfl_init(&td->mb.e_mbd.cfl, &cm->seq_params);
     av1_crc32c_calculator_init(&td->mb.mb_rd_record.crc_calculator);
-    td->intrabc_used_this_tile = 0;
 
     av1_encode_sb_row(cpi, td, tile_row, tile_col, current_mi_row);
 #if CONFIG_MULTITHREAD
@@ -472,7 +471,7 @@
   for (int i = 0; i < num_workers; i++) {
     AVxWorker *const worker = &cpi->workers[i];
     EncWorkerData *const thread_data = (EncWorkerData *)worker->data1;
-    cpi->intrabc_used |= thread_data->td->intrabc_used_this_tile;
+    cpi->intrabc_used |= thread_data->td->intrabc_used;
     // Accumulate counters.
     if (i < cpi->num_workers - 1) {
       av1_accumulate_frame_counts(&cpi->counts, thread_data->td->counts);
@@ -492,6 +491,8 @@
     worker->data1 = thread_data;
     worker->data2 = NULL;
 
+    thread_data->td->intrabc_used = 0;
+
     // Before encoding a frame, copy the thread data from cpi.
     if (thread_data->td != &cpi->td) {
       thread_data->td->mb = cpi->td.mb;
