SUCCESS! I queried the grade field in mdl_oublog and, sure enough, it was 'unsigned'. So it would not take negative numbers.
The fact it was unsigned is strange. In my other 2.2 installation, the field was not designated as signed or unsigned.
In any case, I changed it to signed
alter table mdl_oublog modify grade int signed;
and now it works!
Thanks, Rob, for talking me though this!