Ok, I'll jump in here...something has been bugging me about this problem (and this may be a red herring, so please forgive me if it is):
Generally, when you have grouping in the report, and you want to do a calculation in the group footer, you would base your calculation on the sums (or some other summary) of the detail records for that group. For example your formula (without the null checks, mind you), should look something like
sum({@BCWP},{table.task#})/sum({@BAC},{table.task#}
Now, if your group only has one record, or you're only interested in the last record of the group, then putting say, one of synapse's formulas in the group footer (as he always gets this stuff write given the correct problem description) should work. Do you only have one record per group?
On the other hand, if you have multiple records per group, there is no way your calc is going to be correct, regardless of your trapping routine. You'll only show the results for the very last record in the group.