I expect that the output is a p-value, correct? so the p-value will obviously only be positive. you could possibly do a couple things to retain the signs. A) you could find the indices of all negative values, and then after the signrank test multiply all of those indices by -1, or B) output separate maps for positive and negative values.
I've been trying to generate a SPM for a signrank test rather than a t-test. I've been able to get the signrank map written (using Matlab's Statistics Toolbox & spm_write_vol), but in the process it seems like it's converting negative values to positive ones. Is there a default in the spm_write_vol that causes this to happen?