Convert to 2 decimals and keep leading zero
You don't need both cast and round.
For example:
declare @val decimal(9,2) = '849.909839'
select @val [val]
, cast('849.909839' as decimal(9,2))*-1.00 [cast_first]
, cast(convert(float,'849.909839') *-1.00 as decimal(9,2)) [cast_last]

If you run this, you can see the problem. It's in the else clause. you should do a cast after you multiply by -1.00.