Hey Molloy

To me that sounds like really strange behavior by the broker. They have essentially said that the price you received was fair and correct, but then admitted some sort of wrongdoing and liability by crediting your account. That doesn't add up to me - either they've done something wrong or they haven't. They can't have it both ways! If I were you, I'd be asking for some sort of explanation.

One way to avoid spread widening affecting your trading is to avoid trading around times of reduced market liquidity, such as immediately prior to significant news releases.

From the manual, during live trading Zorro can access the broker's current spread using the built in 'Spread' variable. You could write a simple filter that prevents trading when the spread is wide. For example:

var mySpreadLimit = 20*PIP;
if (Spread <= mySpreadLimit)
{execute trade function}

If you take this approach, be aware that during simulation and training mode, Zorro takes the value for Spread from the AssetsFix.dta file (or whatever file you tell it to). This could lead to misleading results if trades are taken during simulation that wouldn't be taken during live trading. You'd need to make sure you accounted for such trades by adjusting your results accordingly.

Hope that helps.