more accurate calculation