When merging two units with a "negativ" attack value (attack value is not suitable for attacking, but only for defending), the value is miscalculated. The bug is in unit.c, where it says:
unit->prop.atks[i] = (int)( weight1 * abs( unit->prop.atks[i] ) + weight2 * ( source->prop.atks[i] ) );
There is missing an abs() in the second addend.
patch against trunk, fixing the bug