diff --git a/vp8/vp8_cx_iface.c b/vp8/vp8_cx_iface.c
index 966355da1506e6489c716dea16d6a6af940ca6a2..8fcee81b498b6e0c74f915fe385dc9946e89dc74 100644
--- a/vp8/vp8_cx_iface.c
+++ b/vp8/vp8_cx_iface.c
@@ -806,14 +806,17 @@ static vpx_codec_err_t vp8e_encode(vpx_codec_alg_priv_t  *ctx,
                     int i;
                     const int num_partitions =
                             (1 << cpi->common.multi_token_partition) + 1;
+
+                    pkt.data.frame.flags |= VPX_FRAME_IS_FRAGMENT;
+
                     for (i = 0; i < num_partitions; ++i)
                     {
                         pkt.data.frame.buf = cx_data;
                         pkt.data.frame.sz = cpi->partition_sz[i];
                         pkt.data.frame.partition_id = i;
                         /* don't set the fragment bit for the last partition */
-                        if (i < num_partitions - 1)
-                            pkt.data.frame.flags |= VPX_FRAME_IS_FRAGMENT;
+                        if (i == (num_partitions - 1))
+                            pkt.data.frame.flags &= ~VPX_FRAME_IS_FRAGMENT;
                         vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt);
                         cx_data += cpi->partition_sz[i];
                         cx_data_sz -= cpi->partition_sz[i];