That could be fixed with 1 additional concept. Instead of
Customer: 1 - 1: Set(Dates)
What if it was Customer 1 - *: Contract: 1 - 1: Set(Dates)
Overlap achieved.