The code, that calculates user availability based on events he will be attending (see https://secure.phabricator.com/diffusion/P/browse/master/src/applications/people/query/PhabricatorPeopleQuery.php;46a225c7b1cba077979b59166211011cf939cdce$397) is presuming, that event length is shorter then queried interval (from today and 3 days long). Because of that events, that either "start before queried range" or "end after queried range" (including all day events) never affect user availability.
IMO the event range should be checked like this "events user is attending are ongoing within queried interval".