diff --git a/src/ratchet.rs b/src/ratchet.rs
index e638aab..c78b51e 100644
--- a/src/ratchet.rs
+++ b/src/ratchet.rs
@@ -111,10 +111,11 @@ impl Ratchet {
             return Err("Skipped to many keys");
         }
         match self.ckr {
-            Some(d) => {
+            Some(mut d) => {
                 while self.nr < until {
                     let (ckr, mk) = kdf_ck(&d);
                     self.ckr = Some(ckr);
+                    d = ckr;
                     self.mkskipped.insert((self.dhr.unwrap().to_string().as_bytes().to_vec(), self.nr), mk);
                     self.nr += 1
                 }
@@ -372,10 +373,11 @@ impl RatchetEncHeader {
         if self.nr + MAX_SKIP < until {
             return Err("Skipping went wrong")
         }
-        if let Some(d) = self.ckr {
+        if let Some(mut d) = self.ckr {
             while self.nr < until {
                 let (ckr, mk) = kdf_ck(&d);
                 self.ckr = Some(ckr);
+                d = ckr;
                 self.mkskipped.insert((self.hkr, self.nr), mk);
                 self.nr += 1
             }
@@ -444,4 +446,4 @@ impl RatchetEncHeader {
         let ex: ExRatchetEncHeader = bincode::deserialize(inp).unwrap();
         RatchetEncHeader::from(&ex)
     }
-}
\ No newline at end of file
+}