anchor.diff:              while mutDeck.[!pos].counter >= mutDeck.[!pos].max do
                   // Pick up tokens
                   lifted := !lifted + mutDeck.[!pos].counter
  -                mutDeck.[!pos] != 0
  +                mutDeck.[!pos].counter <- 0
   
                   // Move one slot to the left
                   pos := !pos - 1
  
positive.code:     // Convenience operators for manipulating the counter of a MutSlot
      static member (+=) (ms : MutSlot, a) = ms.counter <- ms.counter + a
      static member (-=) (ms : MutSlot, a) = ms.counter <- ms.counter - a
      static member (!=) (ms : MutSlot, a) = ms.counter <- a
  
  let rec NextCombination (oldBoard:Board) : Board option =
      // Mutable copy of the deck
  
negative.code: 
                  // Lift extra tokens
                  lifted := mutDeck.[!pos].counter - mutDeck.[!pos].max
                  mutDeck.[!pos].counter <- mutDeck.[!pos].max
  
                  // Try to deposit them one slot to the right
                  pos := !pos + 1
                  if !pos <= lastPos
                  then
                      // Okay! Deposit tokens.
                      mutDeck.[!pos].counter <- !lifted
                      lifted := 0
  
                      // Recurse, in case this slot also needs to overflow.
  