Hi Ryan,
One observation - it doesn't handle negative values.
This fixes that problem, but at the expense of some readability:
SELECT REPLACE(CONVERT(varchar(24), floor(abs(CONVERT(money, @s-2))) * sign(convert(money, @s-2)), 1), '.00', substring(@s, charindex('.', @s-2 + '.'), 20))
There may be a more elegant fix than this.
Cheers
John