A problem I have encountered repeatedly in my PhD is that the way palaeontologists date their phylogenetic trees means lots of branches represent zero million years. In fact, at every single bifurcation one branch is always zero million years in length. This fact is somewhat hidden graphically as published trees drawn against stratigraphy (like this one) usually include some additional default length so that individual branching events can easily be seen. In reality, with branch lengths appropriately scaled, they look more like this:
So why does this matter? Well the primary reason (as far as I am concerned) is that this screws up the standard calculation of evolutionary rates. (A rate being some change over time; with a denominator of zero the result is infinity.) A secondary problem, then, is that zero-length branches simply aren't realistic.
How to get around this? Well early authors (notably Karl Derstler and Peter Forey) independently went for the simplest option - simply add something to the divisor in each case, 1 million years, 2 million years etc. This may be fine in some cases, but for large phylogenies this divisor can end up pushing branching events really far back in time. (In one example I worked on, lungfish appeared back in the Precambrian.) Not so good.
The best method I am aware of was developed in a paper by my colleague Marcello Ruta and co-authors. They argued the best approach was for zero-length branches to 'share' some time with a preceding branch of positive length. Furthermore, they argued that the proportion of sharing should be linked to the number of character changes on each branch. This essentially assumes an underlying model of equal-rates of character change and hence is biased to what would normally be the null hypothesis.
The Ruta et al. approach was adopted by us in our Science paper, but with a slight modification. As we were using a manual implementation we (by which I mean Steve) used a simpler approach whereby the shared time was split up equally.
Recently I have returned to this problem and have now constructed R code to automate the process. Here is what the above tree looks like using the equal sharing method:
For the rate calculations (and the group) you will have to wait for the paper.