///|
fn remainder97(compact : String) -> Int {
  let mut rem = 0
  let n = compact.length()
  for k in 0.. Result[Int, IbanError] {
  let compact = compact_text(input)
  if compact.length() == 0 {
    return Err(EmptyInput)
  }
  match charset_offset(compact) {
    Some(offset) => Err(InvalidCharset(offset))
    None =>
      if compact.length() < 5 {
        Err(TooShort(compact.length()))
      } else {
        Ok(remainder97(compact))
      }
  }
}

///|
fn check_digits_from_remainder(rem : Int) -> String {
  let value = 98 - rem
  let hi = value / 10
  let lo = value % 10
  let out = StringBuilder()
  out.write_char((48 + hi).unsafe_to_char())
  out.write_char((48 + lo).unsafe_to_char())
  out.to_string()
}