diff --git a/test/vp9_boolcoder_test.cc b/test/vp9_boolcoder_test.cc
index 5d87ff6bff9cecce32ee647c9f16ef015ace30a7..42b2229bffe25b0091e1350709cd38360e28e181 100644
--- a/test/vp9_boolcoder_test.cc
+++ b/test/vp9_boolcoder_test.cc
@@ -68,6 +68,9 @@ TEST(VP9, TestBitIO) {
 
         vp9_stop_encode(&bw);
 
+        // First bit should be zero
+        GTEST_ASSERT_EQ(bw_buffer[0] & 0x80, 0);
+
         vp9_reader br;
         vp9_reader_init(&br, bw_buffer, buffer_size);
         bit_rnd.Reset(random_seed);
diff --git a/vp9/decoder/vp9_dboolhuff.c b/vp9/decoder/vp9_dboolhuff.c
index 9921ea727b2387405a0b0073f0999b724f65d4e1..df77d650d2021121e883fdbff62977275f08397b 100644
--- a/vp9/decoder/vp9_dboolhuff.c
+++ b/vp9/decoder/vp9_dboolhuff.c
@@ -14,6 +14,8 @@
 #include "vp9/decoder/vp9_dboolhuff.h"
 
 int vp9_reader_init(vp9_reader *r, const uint8_t *buffer, size_t size) {
+  int marker_bit;
+
   r->buffer_end = buffer + size;
   r->buffer = buffer;
   r->value = 0;
@@ -24,7 +26,8 @@ int vp9_reader_init(vp9_reader *r, const uint8_t *buffer, size_t size) {
     return 1;
 
   vp9_reader_fill(r);
-  return 0;
+  marker_bit = vp9_read_bit(r);
+  return marker_bit != 0;
 }
 
 void vp9_reader_fill(vp9_reader *r) {
diff --git a/vp9/encoder/vp9_boolhuff.c b/vp9/encoder/vp9_boolhuff.c
index 86143ca5728c1b3daf80e2d34ea3eaebb5f4a94b..0f1aa594e94582beb752acb348c4cbfead93605a 100644
--- a/vp9/encoder/vp9_boolhuff.c
+++ b/vp9/encoder/vp9_boolhuff.c
@@ -47,6 +47,7 @@ void vp9_start_encode(vp9_writer *br, uint8_t *source) {
   br->count    = -24;
   br->buffer   = source;
   br->pos      = 0;
+  vp9_write_bit(br, 0);
 }
 
 void vp9_stop_encode(vp9_writer *br) {