I'm assuming we are talking about Two's Complement integers (positive and negative of course). You need to first understand the boundaries:
The largest positive value is:
$$
2^{n - 1} - 1 = 0111\ 1111\ 1111\ ...
$$
The "largest" negative (most negative value) occurs at:
$$
-2^{n - 1} = 1000\ 0000\ 0000\ ...
$$
Adding any positive value to $2^{n - 1} - 1$ will result in an overflow! Likewise adding any negative value to $-2^{n - 1}$ will also result in an overflow (or perhaps more precisely and underflow--but that has a different meaning when it comes to floating point values).
It should be clear that adding anything "above" $1000\ 0000\ 0000\ ...$ ($-2^{n - 1}$) to $0111\ 1111\ 1111\ ...$ ($2^{n - 1} - 1$) will result in a carry! Yet by the above we know that adding any of these values $\geq 1000\ 0000\ 0000\ ...$ will simply be subtracting a value that results in a valid (possibly negative if it's $-1$) result. On the contrary, if we attempt to add a positive value such that the first digit is $0$, then we get no carry and yet we get overflow.
When we try to add two negatives ($1...$ and $1...$) we are bound to have a carry but this always results in $1\ 0000\ 0000\ ...$ added to some two's complement value.
The algorithm for determining overflow is very simple: if you add two positive numbers then you should get a positive and if you add two negative numbers then you should get a negative (and if you add a positive and a negative, you will never get the "wrong" result).
I don't know if that helps or not because I'm not too sure what you mean by "end carry".