It shouldn't be rounding if you're not explicitly rounding it.
Can you post DDL for the table that contain those fields?
If you're using ROUND(), use the third argument (with a non-zero value) to indicate that SQL Server must truncate and not round.
EDIT: After examining your query, I found there's a big mess. You should avoid the old types of joins and keep only the new ones to improve readability. You could avoid at least one subquery and maybe even two.