fib := n -> {
  // we start with these two values
  v := (0, 1)
  loop {
    // subtract 1 from n
    &n = (n, -1).sum
    // extract the latest values
    (l, r) := v
    // if n is still positive...
    if (n.signum, 1).eq {
      // ...advance the fib. sequence
      &v = (r, v.sum)
      // and don't break from the loop
      ()
    } else {
      // n is zero or negative (happens the n-th time this loop runs),
      // so we break with the latest value
      (r)
    }
  }
}

((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 25, 50, 100), i -> {
  i.print
  ": ".print
  i.fib.println
}).for_each
