Q:

Trying to move the decimal by multiplying by .001. Why is it changing the scale & precision?

I am using SSIS 2008 R2. I have the derived column DER_Package_Size and I am attempting to perform the following expression:
(DT_NUMERIC,8,3)(SUBSTRING(TotalDBRecords,44,8))

This will return a numeric value such as "00050000". If I leave this expression as is, this record will go into the database as "00050000.000". The correct value is 00050.000. I am now thinking I need to multiply that result by .001 to get the decimal in the right place. I am having problems when I do that to the end of the expression above. It changes the precision and scale for that derived column to 12 and 6, respectively, instead of the 8 and 3 it should be. 
Any input on this would be greatly appreciated. Thank you in advance.

A:

As mentioned by @mike sherrill 'catcall' in the comments, multiplying 2 numerics each with precision 3 will result in a numeric with precision 6.  
You just need another cast expression to get your result back down to 3: 
(DT_NUMERIC,8,3)(DT_NUMERIC,8,3)(SUBSTRING(TotalDBRecords,44,8)) * .001

