Standard SQL's OVERLAP is based on a half-open period, i.e. the begin is included while the end is excluded.
This is the from the ISO 9075 document:
The result of the <overlaps predicate> is the result of the following expression:
( S1 > S2 AND NOT ( S1 >= T2 AND T1 >= T2 ) )
OR
( S2 > S1 AND NOT ( S2 >= T1 AND T2 >= T1 ) )
OR
( S1 = S2 AND ( T1 <> T2 OR T1 = T2 ) )
It's a bit strange for a human being, but only only as long as you deal with DATEs:
Monday to Wednesday overlaps Wednesday to Friday, because one assumes it's the end of Wednesday for the end date but the begin for the start date.
But this changes when you switch to TIMESTAMPs:
Monday morning to Wednesday noon doesn't overlap Wednesday noon to Friday evening.
In fact it's much easier to work with half-open intervals because the begin of the next period is exactly the end of the previous period and you don't have to think about adding a day/second/milli-second.
I'm used to that for years for implementing temporal tables (slowly changing dimensions), which are Standard SQL now and implemented in Teradata, DB2 and the next release of SQL Server.
So you should consider changing your implementation :-) If you can't you can either add/subtract a day before using OVERLAPS or use Gordon's logic, do what's easier for you and don't care that much about efficiency. (I prefer the 1st because Teradata supports some nice functionality for periods which is hard to rewrite).