To give a simple example: if I find a wallet in the street the moral thing to do is to try to find the owner and return it to him. Yet the rational thing to do is to keep the wallet and spend the money.
This is not necessarily the case. My argument is there is no fixed set of "moral thing to do" that everyone is born just knowing. People discover the "moral thing to do" by trial and error or by observation. The reason people do the "moral thing" is so they can be perceived as a "moral person" by the "moral community". There is no inherently moral thing to do, but there is a normal reaction. Most people will want to take the normal reaction regardless of whether or not they agree with how it feels. Conformity is what is behind morality.
If someone found a wallet and there is no possibility of it ever being detected in the future by anyone that they took the money then a lot of people will take the money. Why? Because the risk vs reward ratio would skew far in favor of taking the money. But if a person seeks respect from the moral community (people who apparently think like you do) and the odds of it being detected that they took the money in the future are high that it could get back to you someday, then they will not take the money so as not to ruin how you perceive of them and so as to not harm their reputation.
The individual we speak of does not need to have a feeling one way or the other about the owner of the wallet and merely has to think about their own consequences to take either action A or action B. The risk vs reward ratio in my opinion determines what action a rational consequence based person might take but even that might not always be the case as a rational consequence based person isn't rational 100% of the time. Say for instance if they know the person who owns the wallet and it's their friend, well now they might not be as rational.