Hi, Here is a pure PIR example that doesn't depend on Rakudo at all.
.sub main :main $P0 = new 'Integer' $P0 = 2 'f'($P0) .end .sub 'f' .param pmc l .lex "$l", l $P0 = find_lex "$l" if $P0 <= 0 goto ret print "entering " $P1 = find_lex "$l" say $P1 $I0 = 1 for: if $I0 > 3 goto for_end '_block1'() inc $I0 goto for for_end: ret: .end .sub '_block1' :outer('f') $P2 = find_lex "$l" $P3 = new 'Integer' $P3 = $P2 - 1 'f'($P3) print "looping in " $P4 = find_lex "$l" say $P4 .end Gives the same erroneous output as the Rakudo program. Jonathan