In general, you  would be right and those expressions wouldn't be equivalent.
But, to my understanding, in the context they occur, they should always yield the same result.
Note that:
- All involved quantities are of type `linenr_T`, which is turn is `long`. Thus, problems that arise when mixing signed/unsigned types shouldn't occur. And, as `int64_t` is guaranteed to be not smaller than long, then those two expressions should be equivalent.
- Even if you redefined `linenr_T` to un unsigned type (which you wouldn't do without careful examination of all its appearances), you would get at least an error on that line (cause expression result would be unsigned and wouldn't match expression format).

Ok, but why bother this all? Why not just enclosing it in parentheses, and rest assured?
- To be honest, the truth is that I did this in a semi-automated way, and the way it's done was simpler to automate.
- In any case, all those horrible castings are there just temporarily, as they are meant to be dropped again when variable types are refactored.

So, I hope I have convinced you that those changes are safe.

In any case, I do agree that they can be confusing, and that type refactoring may take some time. So, I now regret having left it that way.

I will fix it. For my peace of mind and others'

Thanks for daring to review such boring-looking changes.