It's been 6 months since we redirected our old domain, which had a PageRank of 4, to a new domain with 301. However, the PageRank of the new domain is still 0 so far. Anybody knows what probably happened, and how we can fix it? Thanks.
Nothing is wrong with your site. The problem is with the Google Toolbar data. Google only refreshes this data periodically. The last time that was updated was December 5, 2013. That is six months ago; when your new domain wouldn't have had any PageRank.
When Google next releases new data for the Google Toolbar, it is likely that you will see that your new domain has the PageRank from your old domain. There isn't anything to worry about unless you are seeing ranking problems or drops in your Google referral traffic.
For more information here is a site that tracks the toolbar refresh dates and has extensive information about PageRank.
301 redirects work on a page by page level. A portion of the original page(s) rank will be transferred- debated, but many feel that a loss of about 10-15%. It only works on the page level. It does not transfer site rank which is what you are referring to. In addition, any transfer of rank on the page by page level only exists as long as the old domain exists and the 301 redirects exist.
To clarify, site rank (originally referred to as PageRank) is much more than the rank passed by pages. It has to do with site age, trust, and so on. There are a bunch of factors that go into site rank. This is not transferable. So my 15 year old site will have site rank established that can take years to replicate and no amount of 301 redirects can replicate it on the new site.
What needs to happen when redirecting a domain to another, is to not rely on that and build rank for the new domain. The reality is that rank cannot be transferred from one domain to another- only loaned. It all goes back in the end. What is often better is to get the new domain name to stand on it's own, yes borrow page rank, but make the new domain stand on it's own. Then when all is said and done, move your old pages over to the new domain and drop the old one if that is what you want to do.