I was successfully able to do variable spread backtesting in the Zorro free version and I would like to share my approach here for anyone who might want to do the same.

I used my C# DukascopyTickDownloader code from my github repository at https://github.com/trenki2/DukascopyTickDownloader to download the free Dukascopy tick data and convert it to the format that Zorro needs.

The tick downloader can store the data in .t1 and also .bar data and additionally it creates a pseudo asset e.g. EUR/USDs which contains the spread data.

When backtesting one has to read the spread data from the corresponding pseudo asset, set the Spread variable and then do the actual trading.

Here is the code that worked for me:

Code:
while (loop("AUD/USD", "EUR/USD", "GBP/USD", "NZD/USD", "USD/CAD",  "USD/CHF", "USD/JPY"))
{
	string realAsset = Loop1;
	char spreadAsset[10];
	sprintf(spreadAsset, "%ss", realAsset);
	
	Detrend = NOPRICE;
	asset(spreadAsset);
	var spread = priceClose(0);
	
	Detrend = 0;
	asset(realAsset);
	Spread = spread;
	
	Trade();
}