anchor.diff:      let len = String.length s in
       match len with
       | 0 -> failwith "Invalid string"
  -    | 1 | 2 | 3 -> hex_of_bin ((if sign = Signed then String.make (4-len) s.[0] else String.make (4-len) '0') ^ s)
  +    | 1 | 2 | 3 -> hex_of_bin ((if sign = Signed then String(s.[0], (4-len)) else String('0', (4-len))) ^ s)
       | 4 -> hex_of_bin s
  -    | _ -> hex_str_of_bin_str sign (String.sub s 0 (len-4)) ^ hex_of_bin (String.sub s (len-4) 4)
  +    | _ -> hex_str_of_bin_str sign (s.Substring(0, (len-4))) ^ hex_of_bin (s.Substring((len-4), 4))
   
     (** Converts a big int to a binary string *)
     let bin_str_of_big_int width b = 
  
positive.code:     let rec make_string i = 
        if i = 0 then ""
        else (
          let q,m = BigInt.DivMod(!b, two) in
          b := q;
          (make_string (i-1)) ^ (if m = one then "1" else "0")
        ) in
  
negative.code:       let rec lookup (addr:ArrayBits) =
          let lo_bits = addr.data.[0] &&& mask_block in (* store low bits of address *)
          addr.data.[0] <- addr.data.[0] &&& (~~~mask_block); (* mask out low bits for look up *)
          match Map.tryFind addr !map with
          | None -> 
            (* Construct block *)
            let a = Array.create block_array_size (make d_bits) in
  