@tig said:
I still can't see why the IF() doesn't work to trap zero-divide issue ?
perhaps extra ( ) ???
X = IF(**(**sin(A/2)=0**)**, 0, **(**L*(sin((copy+.5)*A)-sin(A/2))/(2*sin(A/2))**)**)
Testing this kind of solution, I think SU want to evaluate any member of the IF before solving it, and if is an error it returns nothing but an error, even the error is in a non needed part of the function 
But... 
Reading your post I had a machiavellian idea : two IF in the function, one like you propose, one under the divide
X = IF(sin(A/2)=0, 0, L*(sin((copy+.5)*A)-sin(A/2))/**IF(2*sin(A/2)=0, 1, 2*sin(A/2)**)
The value for the true second IF can be anything but zero, just to avoid the divide by zero error, and the final result will be zero due to the first IF.
It works on the Divide_Zero.skp I sent before when Value = 0
X = if(Value=0,0,100/if(Value=0, 1, Value))
I will test it soon on the bridge model. It's already slow, and with 2 IF more in each part of the bridge, it can't be faster. But in real, it's slow 