Phew finally... I only made a break through with this problem when I worked it out on a flow chart...the end result looking like the structure of a tournament in reverse. Using nests of for loops seemed to do the trick....apologies in advance for the duplication of values in the code...its fully functional but just needs tightening..however I hope the below code helps someone. import datetime from datetime import datetime from datetime import timedelta FIXED_WEEK_1 = "16/04/2019" W1 = timedelta(days= 7 ) W2 = timedelta(days= 14 ) W3 = timedelta(days= 21 ) W4 = timedelta(days= 28 ) W5 = timedelta(days= 35 ) W6 = timedelta(days= 42 ) W7 = timedelta(days= 49 ) W8 = timedelta(days= 56 ) BOX_1 = 1 BOX_2 = 0 BOX_3 = 1 BOX_4 = 1 week_one_raw = datetime.strptime(FIXED_WEEK_1, '%d/%m/%Y' ) week_one_refined = week_one_raw week_two_refined = week_one_raw + W1 week_three_refined = week_two_refined + W1 week_four_refined = week_three_refined + W1 week_to_pay_refined = week_four_refined + W1 if BOX_1 == 0 : week_one_refined = week_one_raw if BOX_2 == 0 : week_two_refined = week_one_raw + W1 if BOX_3 == 0 : week_three_refined = week_one_raw + W2 if BOX_4 == 0 : week_four_refined = week_one_raw + W3 week_to_pay_refined = week_one_raw + W4 if BOX_4 == 1 : week_four_refined = week_one_raw +W4 week_to_pay_refined = week_one_raw +W5 if BOX_3 == 1 : week_three_refined = week_one_raw + W3 if BOX_4 == 0 : week_three_refined = week_one_raw +W3 week_four_refined = week_one_raw +W4 week_to_pay_refined = week_one_raw +W5 if BOX_4 == 1 : week_three_refined = week_one_raw +W4 week_four_refined = week_one_raw +W5 week_to_pay_refined = week_one_raw +W6 if BOX_2 == 1 : week_two_refined = week_one_raw + W2 if BOX_3 == 0 : week_two_refined = week_one_raw +W2 if BOX_4 == 0 : week_two_refined = week_one_raw + W2 week_three_refined = week_one_raw +W3 week_four_refined = week_one_raw +W4 week_to_pay_refined = week_one_raw +W5 if BOX_4 == 1 : week_two_refined = week_one_raw +W3 week_three_refined = week_one_raw +W4 week_four_refined = week_one_raw +W6 week_to_pay_refined = week_one_raw +W7 if BOX_3 == 1 : week_two_refined = week_one_raw +W3 if BOX_4 == 0 : week_two_refined = week_one_raw + W3 week_three_refined = week_one_raw +W4 week_four_refined = week_one_raw +W5 week_to_pay_refined = week_one_raw +W6 if BOX_4 == 1 : week_two_refined = week_one_raw + W4 week_three_refined = week_one_raw +W5 week_four_refined = week_one_raw +W6 week_to_pay_refined = week_one_raw +W7 if BOX_1 == 1 : week_one_refined = week_one_raw + W1 if BOX_2 == 0 : week_one_refined = week_one_raw +W1 if BOX_3 == 0 : week_one_refined = week_one_raw +W1 if BOX_4 == 0 : week_one_refined = week_one_raw +W1 week_two_refined = week_one_raw +W2 week_three_refined = week_one_raw +W3 week_four_refined = week_one_raw +W4 week_to_pay_refined = week_one_raw +W5 if BOX_4 == 1 : week_one_refined = week_one_raw +W1 week_two_refined = week_one_raw +W2 week_three_refined = week_one_raw +W3 week_four_refined = week_one_raw +W5 week_to_pay_refined = week_one_raw +W6 if BOX_3 == 1 : week_one_refined = week_one_raw +W1 if BOX_4 == 0 : week_one_refined = week_one_raw +W1 week_two_refined = week_one_raw +W2 week_three_refined = week_one_raw +W4 week_four_refined = week_one_raw +W5 week_to_pay_refined = week_one_raw +W6 if BOX_4 == 1 : week_one_refined = week_one_raw +W1 week_two_refined = week_one_raw +W2 week_three_refined = week_one_raw +W5 week_four_refined = week_one_raw +W6 week_to_pay_refined = week_one_raw +W7 if BOX_2 == 1 : week_one_refined = week_one_raw + W2 if BOX_3 == 0 : if BOX_4 == 0 : week_one_refined = week_one_raw +W2 week_two_refined = week_one_raw +W3 week_three_refined = week_one_raw +W4 week_four_refined = week_one_raw +W5 week_to_pay_refined = week_one_raw +W6 if BOX_4 == 1 : week_one_refined = week_one_raw +W2 week_two_refined = week_one_raw +W3 week_three_refined = week_one_raw +W4 week_four_refined = week_one_raw +W6 week_to_pay_refined = week_one_raw +W7 if BOX_3 == 1 : if BOX_4 == 0 : week_one_refined = week_one_raw + W3 week_two_refined = week_one_raw + W4 week_three_refined = week_one_raw + W5 week_four_refined = week_one_raw + W6 week_to_pay_refined = week_one_raw + W7 if BOX_4 == 1 : week_one_refined = week_one_raw + W4 week_two_refined = week_one_raw + W5 week_three_refined = week_one_raw + W6 week_four_refined = week_one_raw + W7 week_to_pay_refined = week_one_raw + W8