Sci@phy 97 Posting Whiz in Training

Hi! I have the following code:

mov al, 5d
neg al

When it executes, CF = SF = AF = 1
Ok, I think I understand why
AF (number is bigger than 00001111b ?),
SF (most significant bit is now 1 not 0)

But what I don't understand is why CF?
I thought it happens only if you go out of boundaries, like if result exceedes FF (100h or above can't fit in bit)

Please, help poor begginer :)