>First record is 0
That's your answer. The resulting field size is calculated based on the first record. That's why you need to use the trick from prev. message or CAST function in VFP9. Another trick is to use UNION with 1=0, e.g.
select 0000000000000000.00 as myResultField from myTable where 1=0 ;
union ;
select ....
If it's not broken, fix it until it is.
My Blog