Case when missing line logic
Your second clause is triggering as true before your third clause and as such your third clause does not get evaluated - CASE WHEN returns the first TRUE value as opposed to the last TRUE value

@Val1 = 5 TRUE

@Val2  IN(1,2) TRUE

@Val3 = 200000 TRUE

@Val4 IS NOT NULL TRUE