Вы, очевидно, думали, что каждый неполный месяц надо приводить к полному?
То есть апрель 28 дней - это один месяц.
И май 15 дней - это ещё один месяц.
Так у вас и получилось 2 месяца.
Это неверный алгоритм.
Сначала надо сложить все кусочки отпускного стажа (если их более одного), выразив его в полных месяцах и днях.
Потом дни, если их не менее, чем на 1 месяц, привести к полным месяцам и дням (из расчета 30 дней/мес)
И уже этот остаток дней проверять на более/менее половины месяца.
А если бы округлялись все неполные месяцы в отдельности, то могло бы получиться следующее:
1) работник отработал 12 неполных месяцев - в каждом менее половины дней, допустим по 14. КНО равна 0.
2) работник отработал 12 неполных месяцев - в каждом половину или более дней, допустим по 15. КНО как за полный год.
То есть отработав в обоих случаях примерно одинаково - по полугоду - работник в одном случае получает 0, а в другом СЗ за все 28 дней.
- Некрасиво!
PS
Кстати, 15 дней в мае - это в любом случае менее половины месяца.