The function you provided should work as is, without any warnings. If you are in fact referencing column A in the formula for B and column B in the formula for A, then you might try writing that logic as a single formula or follow @Craige_Hales's advice and do that with a script instead.
Table with your example formula, this should evaluate without warning or error.
New Table( "Untitled 16",
Add Rows( 10 ),
New Column( "X",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( Selected() == 1, 1, Row() == 1, 1, Lag( :X ) * 0.99 ) ),
Set Selected
),
Set Row States( [0, 0, 0, 0, 1, 0, 0, 0, 1, 0] )
)