invece di if len, nell'ultimo caso, potresti provare if len!=0...

comunque hai provato ad utilizzare trace per stampare man mano i risultati e vedere se il codice si comporta correttamente??