diff --git a/payload_generator/delta_diff_utils.cc b/payload_generator/delta_diff_utils.cc
index 077fbfe..b4b49e6 100644
--- a/payload_generator/delta_diff_utils.cc
+++ b/payload_generator/delta_diff_utils.cc
@@ -155,6 +155,8 @@
                            size_t src_block,
                            size_t dst_block,
                            size_t src_offset) {
+  CHECK_NE(src_block, std::numeric_limits<uint64_t>::max());
+  CHECK_NE(dst_block, std::numeric_limits<uint64_t>::max());
   if (ShouldCreateNewOp(*ops, src_block, dst_block, src_offset)) {
     auto& op = ops->emplace_back();
     op.mutable_src_extent()->set_start_block(src_block);
@@ -162,6 +164,7 @@
     op.mutable_dst_extent()->set_start_block(dst_block);
     op.mutable_dst_extent()->set_num_blocks(1);
     op.set_src_offset(src_offset);
+    op.set_type(CowMergeOperation::COW_XOR);
   } else {
     auto& op = ops->back();
     auto& src_extent = *op.mutable_src_extent();
@@ -902,6 +905,7 @@
                                   bsdiff_delta.size(),
                                   src_extents.size())) {
           if (config.enable_vabc_xor) {
+            StoreExtents(src_extents, operation.mutable_src_extents());
             PopulateXorOps(&aop, bsdiff_delta);
           }
           operation.set_type(operation_type);
@@ -971,7 +975,11 @@
   // Embed extents in the operation. Replace (all variants), zero and discard
   // operations should not have source extents.
   if (!IsNoSourceOperation(operation.type())) {
-    StoreExtents(src_extents, operation.mutable_src_extents());
+    if (operation.src_extents_size() == 0) {
+      StoreExtents(src_extents, operation.mutable_src_extents());
+    }
+  } else {
+    operation.clear_src_extents();
   }
 
   *out_data = std::move(data_blob);
diff --git a/payload_generator/delta_diff_utils_unittest.cc b/payload_generator/delta_diff_utils_unittest.cc
index 436e265..5e7d6f0 100644
--- a/payload_generator/delta_diff_utils_unittest.cc
+++ b/payload_generator/delta_diff_utils_unittest.cc
@@ -614,6 +614,9 @@
       &aop,
       reinterpret_cast<const uint8_t*>(patch_data.data()),
       patch_data.size());
+  for (const auto& op : aop.xor_ops) {
+    ASSERT_EQ(op.type(), CowMergeOperation::COW_XOR);
+  }
   ASSERT_EQ(aop.xor_ops.size(), 1UL) << "Only 1 block can possibly be XORed";
   ASSERT_EQ(aop.xor_ops[0].src_extent().num_blocks(), 1UL);
   ASSERT_EQ(aop.xor_ops[0].src_extent().start_block(), 51UL);
@@ -643,6 +646,9 @@
       &aop,
       reinterpret_cast<const uint8_t*>(patch_data.data()),
       patch_data.size());
+  for (const auto& op : aop.xor_ops) {
+    ASSERT_EQ(op.type(), CowMergeOperation::COW_XOR);
+  }
   ASSERT_EQ(aop.xor_ops.size(), 1UL) << "Only 1 block can possibly be XORed";
   ASSERT_EQ(aop.xor_ops[0].src_extent().num_blocks(), 1UL);
   ASSERT_EQ(aop.xor_ops[0].src_extent().start_block(), 51UL);
@@ -678,6 +684,9 @@
       patch_data.size());
   ASSERT_EQ(aop.xor_ops.size(), 4UL);
   for (const auto& op : aop.xor_ops) {
+    ASSERT_EQ(op.type(), CowMergeOperation::COW_XOR);
+  }
+  for (const auto& op : aop.xor_ops) {
     ASSERT_EQ(op.src_offset(), 123UL + 456UL);
     LOG(INFO) << op.src_extent() << ", " << op.dst_extent();
   }
diff --git a/payload_generator/merge_sequence_generator.cc b/payload_generator/merge_sequence_generator.cc
index c5fd988..7f5032b 100644
--- a/payload_generator/merge_sequence_generator.cc
+++ b/payload_generator/merge_sequence_generator.cc
@@ -129,6 +129,8 @@
           CHECK_EQ(op.src_extent().num_blocks(),
                    op.dst_extent().num_blocks() + 1);
         }
+        CHECK_NE(op.src_extent().start_block(),
+                 std::numeric_limits<uint64_t>::max());
       });
   return true;
 }
