Not sure at the moment what's going on. Try these. Instead of calling SetValue, why don't you just assign the due data? reminder.Due = due. That should already set the entity to modified, so then you can skip the call to SetModified. Set a breakpoint and make sure the Due data was actually changed and that the entity is in modified state.
Marks suggestion is also a good. This doesn't necessarily have to be done on the client.