Are circular tapes exciting?
Haskell, 119 bytes

t#'&lt;'=last t:init t
(h:t)#c|c&lt;'#'=1-h:t|c&gt;'='=t++[h]|1&lt;2=read[c]:t
f p=[n|n&lt;-[1..length p],sum(foldl(#)(0&lt;$[1..n])p)&gt;0]


Try it online!

Function # is the interpreter for a single command c. The whole program p is run by folding # with the starting tape into p. f executes p for every tape and keeps those where the sum of the cells is at least 1.