If you are getting heat when it is warmer but not when it is really cold and everything else seems to be working, it is possible that you need to block your radiator. These engines are relatively thermally efficient and when it gets cold, the radiator is actually too large for an unloaded engine and the coolant can't get hot enough to give you heat. If I don't block most of the radiator in my truck when it gets sub zero, I don't get any heat. Try putting a piece of cardboard right in front of the radiator that covers most of it and see whether it makes a differece.