Implement some modes of calculate_addpos()