: (parsed) ( a -- n f ) DUP C@ ( a c ) DUP '-' = IF DROP 1+ ( a+1 ) (parsed) 0 ROT ( f 0 n ) - SWAP EXIT ( 0-n f ) THEN 0 SWAP _pdacc ( a r f ) ?DUP IF 2DROP 0 EXIT THEN BEGIN ( a r ) SWAP 1+ ( r a+1 ) DUP C@ ( r a c ) ROT SWAP ( a r c ) _pdacc ( a r f ) ?DUP UNTIL 1 = ( a r f ) ROT DROP ( r f ) ;