diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java
index c211ce7..648f28e 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java
@@ -183,6 +183,7 @@
         int pos = ((kmerlength - 1) % 4) << 1;
         byte code = (byte) (c << pos);
         bytes[0] = (byte) (((bytes[0] >>> 2) & 0x3f) | code);
+        clearLeadBit();
         return output;
     }
 
@@ -211,12 +212,15 @@
             byte in = (byte) ((bytes[i + 1] >> 6) & 0x03);
             bytes[i] = (byte) ((bytes[i] << 2) | in);
         }
-        // (k%4) * 2
+        bytes[size - 1] = (byte) ((bytes[size - 1] << 2) | c);
+        clearLeadBit();
+        return output;
+    }
+    
+    protected void clearLeadBit(){
         if (kmerlength % 4 != 0) {
             bytes[0] &= (1 << ((kmerlength % 4) << 1)) - 1;
         }
-        bytes[size - 1] = (byte) ((bytes[size - 1] << 2) | c);
-        return output;
     }
 
     public void set(KmerBytesWritable newData) {
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
index fc63fd8..5a4329e 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
@@ -107,6 +107,7 @@
         this.kmerlength = k;
         setSize(0);
         setSize(KmerUtil.getByteNumFromK(k));
+        clearLeadBit();
     }
 
 }
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritableFactory.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritableFactory.java
index 9bd6acb..c00967f 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritableFactory.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritableFactory.java
@@ -80,6 +80,7 @@
         if (byteInKmer == 0) {
             kmer.getBytes()[0] = (byte) ((kmerChain.getBytes()[0] & 0xff) >> posInByteOfChain);
         }
+        kmer.clearLeadBit();
         return kmer;
     }
 
@@ -112,6 +113,7 @@
         } else {
             kmer.getBytes()[0] = (byte) (kmerChain.getBytes()[kmerChain.getLength() - i] & ((1 << posInByteOfChain) - 1));
         }
+        kmer.clearLeadBit();
         return kmer;
     }
 
@@ -138,9 +140,7 @@
         if (byteInKmer == 0) {
             kmer.getBytes()[0] = (byte) ((kmerChain.getBytes()[0] & 0xff) >> posInByteOfChain);
         }
-        if (kSize % 4 != 0) {
-            kmer.getBytes()[0] &= (1 << ((kSize % 4) << 1)) - 1;
-        }
+        kmer.clearLeadBit();
         return kmer;
     }
 
@@ -167,6 +167,7 @@
         } else {
             this.kmer.getBytes()[0] = (byte) (kmer.getBytes()[0] | ((nextCode & 0x3) << ((kmer.getKmerLength() % 4) << 1)));
         }
+        this.kmer.clearLeadBit();
         return this.kmer;
     }
 
@@ -194,6 +195,7 @@
             this.kmer.getBytes()[byteInMergedKmer] = (byte) ((kmer.getBytes()[i] << 2) | ((kmer.getBytes()[i + 1] >> 6) & 0x3));
         }
         this.kmer.getBytes()[byteInMergedKmer] = (byte) ((kmer.getBytes()[kmer.getLength() - 1] << 2) | (preCode & 0x3));
+        this.kmer.clearLeadBit();
         return this.kmer;
     }
 
@@ -235,6 +237,7 @@
                 kmer.getBytes()[0] = (byte) ((0xff & nextKmer.getBytes()[0]) >> (8 - posNeedToMove));
             }
         }
+        kmer.clearLeadBit();
         return kmer;
     }
 
@@ -302,6 +305,7 @@
                 curByteAtKmer++;
             }
         }
+        this.kmer.clearLeadBit();
         return this.kmer;
     }
 }
