Zip does indeed break the 'rule', but this is not an excuse, cp and mv manage just fine with:
in in in in [...] out