I should still find what rules they used (astronomical observation of sun’s position? But the spring equinox has the sun in Pisces, not in Aries as the old Persian name is...), but there are interesting patterns. For example, only Gemini, Cancer and Leo could be 32 days, and were 31 days in years that they were not 32 days, and at least one of them and at most two of them was/were 32 days each year (in the table I have, there is one single case when Taurus is also 32 days, while in every other year it’s 31 days, but it may be an error). Also, only Scorpio, Sagittarius, Capricorn, and Aquarius could become 29 days, and they were 30 days in other years. Or Pisces is always 30 days, the only month whose length doesn't change in my table of 1230–1303 AP (about 1851–1925 CE).
Interestingly, the 33-year cycle leap year approximation holds for that seventy-five years, so the most common software implementations out there (used in Jalali, .NET, and Mono), compute the first day of the year correctly for the period of 1851–1925. But since they assume the present month lengths instead of the changing ones, they compute the Persian dates correctly only for about five-ninth (55.55%) of the dates in that period.