Negative Scenario Engine

Can we break up the logic here a bit ? seems to be complicated to track, and test as well.