The iread function in dd.c issues a warning if the previous read was short, suggesting that you use iflag=fullblock
However, the warning is issued when the previous call to iread was partial, so if only the final read was short then no warning is issued. Importantly, this will always be the case when there was only one read, and it was partial. I'd suggest that if the strategy of warning on subsequent reads is to be used, the warning routine should be run once again after the final read.