; : ?retotal ( total fib- fib+ -- retotal fib- fib+ ) dup even? [ [ swap drop + ] 2keep ] [ ] if ; : (sum-even-fibs-below) ( partial fib- fib+ max -- total ) 2dup max-exceeded? [ 3drop ] [ [ ?retotal next-fibs ] dip (sum-even-fibs-below) ] if ; PRIVATE> : sum-even-fibs-below ( max -- sum ) [ 0 0 1 ] dip (sum-even-fibs-below) ; : euler002 ( -- answer ) 4000000 sum-even-fibs-below ;