The nomenclature of "kth cousin l times removed" clearly was not invented by a mathematician.
A friend of mine (hi, Kate!), in an effort to explain the nomenclature, said that "Nth cousins share an (N-1)th-great grandparent." This makes sense with respect to the traditional nomenclature, but that "-1" is kind of awkward. But you can't make it go away; the rephrasing is "Nth cousins share a common ancestor (N+1) generations back".
Therefore siblings are zeroth cousins, since they share an ancestor one generation back (their parents). (For the sake of simplicity I'm ignoring half-siblings, who share one parent, and all other half-relations.)
And in the degenerate case, you are your own negative-first cousin; you share an ancestor with yourself zero generations back (yourself!)
The relevant number is the number of generations between you and the first common ancestor; thus what we call "first cousins", for example, should really be indexed by the number two. This would make the indexing start at zero, not minus one.
The "removed" nomenclature gets even weirder. If two people share a common ancestor, who is k generations above person A and k+l generations above person B, where l is positive, then they are (k-1)th cousins l times removed. So if my grandparent is your great-grandparent, then we have k = 2, l = 3, so we're first cousins once removed. (Incidentally, if my grandparent is your great-grandparent, then you must live in the future; as of 2007 no such person exists.) The nomenclature is symmetrical, which is surprising because the only other English-language kinship terms that are symmetrical involve people of the same generation. (And this is only true if you equate "brother" and "sister", or use the gender-neutral word "sibling".) If person U is your uncle, you're not his uncle; you're his niece or his nephew.
Now, I share an ancestor with my uncle (my mother's brother); his mother is my grandmother. (His father is my grandfather, too, but my grandfather's dead, and I didn't much like him when he was alive.) So we have k = l = 1, and so he's my 0th cousin once removed.
And my grandmother? She's my negative first cousin twice removed. (In general, your direct ancestors, n generations backed, are your negative first cousins n times removed.)
The simplest fix would seem to be shift all the cousin numbers up by one, so your siblings are now your first cousins, the people currently called "cousins" (people with the same grandparent) are second cousins, and so on. That way the indexing starts at zero, not negative one. The "removed" nomenclature seems a bit funny, but I suppose that in a lot of cases the important quantity is the difference in generation number between two people, so I'd actually keep it the way it is if I were reforming the system -- although perhaps de-symmetrizing it, so that one can immediately tell which of the two people involved is of the older generation.