Perhaps it's just a matter of your own misunderstanding. When adding, if the carry out is a
1
then there is a carry for the next higher-order add section. When subtracting, if the carry out is a 1
then there is no borrow for the next higher-order subtract section. For subtraction it's only when the carry out is a 0
that you need to borrow from the next higher-order subtract section. This is consistent with you setting the carry-in to '1', by the way! I didn't read everything you wrote. Just skimmed the diagram, which didn't look wrong, and figured perhaps it was just you.