Try it online!
v / <^ ~+AA/v
1v ~B B vC v> ^/ <
v ~ ?\BB\v ?= ~ !
1D~ D ^ +C >~
ADA~^ + ^ B@
The program generates a Fibonacci number, doubles it, and compares it to the input. If it's greater than or equal to the input, it is halved and output, otherwise it's discarded and the next number is generated.
the question mark [input] hits a splitter [\]. one bit is redirected while the rest of the bits move to top B [input].
1v ~B top D [2fib(n-1)], which starts with 2, is emptied to right A [2fib(n)] and left A [intermittent].
v ~ ?\B bottom D [2fib(n-2)] empties to right A.
1D~ right A empties to top D and top B [2fib(n)].
ADA~ left A empties to bottom D [2fib(n-2)].
v / < *'top B' refers to BOTH B's; 'bottom B' refers to BOTH B's*
B B vC if bottom B [input] isn't empty, it hits a splitter. one bit is redirected to D [intermittent] while the rest of the bits re-enter bottom B.
BB\v top B [2fib(n)] hits a splitter. one bit is redirected to top C [2fib(n)] while the rest re-enter top B.
D ^ +C if bottom B is empty, top B hits another splitter. one bit is redirected to bottom C ["2fib(n) >= input"?].
^ + ^ D will eventually empty to bottom B.
^ ~+AA/v *'A' refers to BOTH A's
C v> ^/ < if bottom C ["2fib(n) >= input"?] isn't empty, it hits a switch. the bits are redirected to B [terminator]
?= ~ ! if bottom C is empty, top C [2fib(n)] hits a switch. the bits are redirected into the question mark, destroying them.
C >~ if bottom C isn't empty, top C empties to A [fib(n)]
B@ A hits 2 splitters. one bit is redirected away, and another is redirected into the exclamation mark [output]. the rest of the bits re-enter A.
B empties into the at-sign, which terminates the program.