For tail elements, you must "push down" lazy values before modifying individual elements.
function pushdown(block, arr, start, B)
bStart := block * B
for j from 0 to B - 1
if bStart + j < n then
arr[bStart + j] := arr[bStart + j] + start[block] + j
start[block] := 0
Call before processing tail elements in both updates and queries.
This adds per tail, maintaining overall per operation.