We do really small chunk sizes in our testing, don't we, and you were ending up with size 0? I think we still want to avoid increasing it for normal cases:
``` size = (size > alignment) ? size - (size % alignment) : size + alignment - (size % alignment); ```