Why Are Custom Errors Displaying For The Wrong Dates?

Errors are displaying for the wrong dates. The model(BookingRoom) is running this custom rule on start and end dates on a tabular input form to check for overlapping date ranges. What am I doing wrong?

public function notOverlap()


    $startDateThis = new DateTime($this->startDate);                        

    $endDateThis = new DateTime($this->endDate); 

    $criteria = new CDbCriteria;

    $criteria->condition = "(id !='".$this->id."' AND bookingId ='".$this->bookingId."')";

    $items = BookingRoom::model()->findAll($criteria);

            foreach ($items as $item){                    

                $startDateItem = new DateTime($item->startDate);                    

                $endDateItem = new DateTime($item->endDate);                    

                   if ($startDateItem <= $endDateThis && $startDateThis <= $endDateItem)             


                        $this->addError('startDate', 'Room already taken!');

                        $this->addError('endDate', 'Room already taken!');