diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
index c12c0a162e3bf3d73df6f7af9ba9c7d48a5791ba..1a9fe46008b717c9caf27e08f87a1daffaf49187 100644
--- a/libavformat/mxfenc.c
+++ b/libavformat/mxfenc.c
@@ -881,7 +881,7 @@ static void mxf_write_index_table_segment(AVFormatContext *s)
     ByteIOContext *pb = s->pb;
     int i, j;
     int temporal_reordering = 0;
-    int key_index = 0;
+    int key_index = mxf->last_key_index;
 
     av_log(s, AV_LOG_DEBUG, "edit units count %d\n", mxf->edit_units_count);
 
@@ -992,6 +992,7 @@ static void mxf_write_index_table_segment(AVFormatContext *s)
             put_be32(pb, mxf->index_entries[i].slice_offset);
     }
 
+    mxf->last_key_index = key_index - mxf->edit_units_count;
     mxf->last_indexed_edit_unit += mxf->edit_units_count;
     mxf->edit_units_count = 0;
 }