I think that you must have messed up the experiment.Based on my experiment, keeping his discipline at 40+ does lower the trait value. Give him $25+ allowance to prevent stat drops. Addiction will always put the discipline back to 40. Making him a guard with a capable captain ensures you keep trying to raise his discipline.
Simplified high level version of the code looks like this:
Code:
if addicted then
if less than $25 allowance then
small risk of stat decrease
addiction-1
end if
if discipline > 40 then
discipline = 40
end if
end if
If addicted npcs can afford to buy drugs then they will remain addicted forever. Otherwise they will slowly decrease the addiction and suffer from withdrawal, while doing so.