$signsstart = [1=>21, 20, 20, 20, 20, 20, 21, 22, 23, 23, 23, 23];
помогло, но 12 месяц все равно не правильно считает. "21, 20, 20, 20, 20, 20, 21, 22, 23, 23, 23, 23" - это числа месяца (они сейчас не правильно расставлены по гороскопу, но сейчас не в этом суть), в последнем коде делается разрыв 12 месяца и 1 - вот так 1222 (22 декабря) до 1231 (31 декабря), и потом 0101 (1 января) до 0119 (19 января), хотя это и один зодиакальный месяц. В этом же коде этого нет и возможно именно это и является причиной некорректного подсчета.