Dividir uma lista em listas menores de tamanho N

Eu estou tentando dividir uma lista em uma série de listas menores.

Meu problema: Minha função para dividir listas não as divide em listas do tamanho correto. Deveria dividi-los em listas de tamanho 30, mas em vez disso os divide em listas de tamanho 114?

Como posso fazer minha função dividir uma lista em um número X de listas de tamanho30 ou menos?

public static List<List<float[]>> splitList(List <float[]> locations, int nSize=30) 
{       
    List<List<float[]>> list = new List<List<float[]>>();

    for (int i=(int)(Math.Ceiling((decimal)(locations.Count/nSize))); i>=0; i--) {
        List <float[]> subLocat = new List <float[]>(locations); 

        if (subLocat.Count >= ((i*nSize)+nSize))
            subLocat.RemoveRange(i*nSize, nSize);
        else subLocat.RemoveRange(i*nSize, subLocat.Count-(i*nSize));

        Debug.Log ("Index: "+i.ToString()+", Size: "+subLocat.Count.ToString());
        list.Add (subLocat);
    }

    return list;
}

Se eu usar a função em uma lista de tamanho 144, a saída será:

Índice: 4, tamanho: 120
Índice: 3, tamanho: 114
Índice: 2, tamanho: 114
Índice: 1, tamanho: 114
Índice: 0, tamanho: 114

questionAnswers(11)

yourAnswerToTheQuestion