Never mind, I changed the code to compare the named parameter values properly and they all update perfectly fine. So I guess I misidentified the actual problem all this time.
Guess this is another learning experience for me…