Hi Amir,
I don't know the answer to this, but logic would suggest that the two sites are using different data sets to arrive at their calculations. If fundamental analysis is important to you, then you need to be as sure as you can be that the data you use is accurate. In your shoes, I'd direct your question to CNN and MSN respectively and see if they can explain it.
I don't know for sure (i.e. you would need to check for yourself), but I'd have thought that key financial data provided by someone like
Reuters is going to be accurate. Their reputation depends upon it. If you want more in depth fundamental analysis, then you may need to pay for it. There are any number of firms out there that will tell you pretty much anything you want to know - here's one picked at random:
StockRover
Tim.