Negative does indeed decrease damage.
But it does not matter that it is negative, only what comes out in the end is important.
They use the increasing negative values to compensate for the function they use for calculating weapon damage having a somewhat exponential effect. (Not good enough in math anymore to be sure about that.)
I have no clue what function they use exactly, but increasing the negative value means that weapon damage does not increase as fast with level as it would without the 'boost'.
Also means that from a certain level on, crafted weapons get better in damage than dropped ones because they always get created with a fixed 'Damage Boost' whereas drops use higher Act Part stats with increased negative 'boosts'.
(In reality, at least crafted 1H axes and swords have higher Damage and Damage Range in the first place, which is why they are so overpowered and become even more so with higher levels.)
I have all possible damage values in a LibreOffice spreadsheet with some functions to fill them in and apply a boost to find out the damage, from Damage 0, Damage Range 10 to Damage 10, Damage Range 10, from level 1 to level 30, but I have no place to upload it and I don't want to register anywhere just to do that ;-)
(I put the values in a sheet so that I could maybe find out some formula, but I failed ;-)
What I know is that the formula posted on the Divinity Wiki (divinity.wikia.com I believe) is wrong because it gets increasingly inaccurate with increasing Damage and Damage range, but it is a good approximation for lower Damage and Damage Range, as the game uses:
Min damage: ((ItemLevel + 1) *2) *(100+Boost DMG)/100 *(Min DMG)
Max damage: ((ItemLevel + 1) *2) *(100+Boost DMG)/100 *(Min DMG + Add DMG)
is the formula they posted and that is a good enough approximation as mentioned above, with
DMG = Damage and Add DMG = Damage Range, ItemLevel = Act Part.
The approximation is good for a Damage 3, Damage Range 2, like a typical 1H sword uses and is still good enough for even 2H axes with 4+3 up to level 20. With higher Damage/Damage Range and above level 20, the values get increasingly inaccurate ... or the game's used floating point math library is so inaccurate, but I doubt that, because with 10/10 on Act Part 30, the difference is some 10% or more as far as I remember, using those values (leaving out any boost, making this multiplier 1)
((30+1)*2*10 == 62 * 10 == 620 and the Max being twice that with a range of 10 --> 1240.
My spreadsheet with values taken from the game's tooltip says 716-1432, so the 'approximation' is no longer good enough for those high values.
The skill system must use the same formula to calculate damage, it only has a different way of calculating Min and Max when some Damage Range is involved.
What values you can use is defined in Stats\Generated\Structure\Modifiers.txt with "DamageBoost" being of type "ConstantInt", which can be looked up in Stats\Generated\Structure\Base\ValueLists.txt.
Now, ConstantInt is not really defined there as a value list, so we must assume, that they mean 'whole number' with it, which can be positive or negative.
... and if that is the case, Larian made tons of mistakes in the Weapons.txt when they used fractional numbers for the boosts, but the engine seems to accept that.
As far as I remember, sharpening a weapon on a whetstone (or a damage boost as a mod on a dropped weapon) does not directly boost current damage with the value specified in the boost but the current and the new boost are first added and then a new damage is calculated, which makes a difference, because, taking as an example a weapon with 1000 base damage and a boost of -30, 1000 * 0.7 = 700. If that were boosted by a 30% boost and that would be applied after this calculation, the damage would be 700 * 1.3 == 910. What is actually calculated though is 1000 * (100 + B1 + B2 )/100 with B1=-30 and B2=30, so the result is 1000 again.