投稿は初めてです。DP.といいます。

 BigNum のバグについては同じく 1.6.2 ですが再現しませんでした。
=> 3065036675
=> 2078129134
環境及びバイナリは i686-MSWin32。

 さて、イテレータとコンテキストの問題ですが、ちょっと書くと

class C
 def initialize(&iter)
  @a = 12
  @p = proc { instance_eval(&iter) }
 end
 def fa
  @p.call
 end
end

o = C.new { @a + 16 }
p o.fa

は、しっかりと動きました。(出力:28)
>@proc=proc{instance_eval(&proc)}
と何が違うのでしょうか…。

 もし質問の意図を間違えていたら申し訳有りません。

# From
  class C;def another;;end;def Just;;end;def ruby;;end;def hacker;;end;end
  print C.instance_methods.reverse.join(" "), ','
# "DP.-KAORU" <program-zero / ma4.seikyou.ne.jp>