public void fillTableMonthBack() {
		// SWAP 2, TEAM 6
        // REFACTORING FOR ENHANCEMENT FROM BAD SMELL
		// Primitive Obsession handled and method shortened. Now it can be maintained easier
		// SWAP 1, TEAM 5
		/*
		 * SMELL: Primitive Obsession - There are a lot of instances of primitive types that can be cleaned. 
		 * If this code was cleaned, the code will be easier to understand and a lot flexible for further changes.
		 */
		int tempMonths = this.monthsAhead;
		if ((new GregorianCalendar().get(Calendar.MONTH) + tempMonths) % 12 == 0) {
			this.yearsAhead--;
		}
		int currentYear = new GregorianCalendar().get(Calendar.YEAR)+ this.yearsAhead;
		this.monthsAhead--;
		tempMonths = this.monthsAhead;
		while (tempMonths < -11) {
			tempMonths += 12;
			currentYear--;
			this.yearsAhead--;
		}
		tempMonths = (new GregorianCalendar().get(Calendar.MONTH)+ tempMonths + 1)%12;

		if (currentYear < this.earliestYear|| (currentYear == this.earliestYear && tempMonths < this.earliestMonth)) {
			this.monthsAhead++;
		} else {
			this.setTitleMonth(tempMonths, currentYear);

			String keyStart = currentYear + "/"+ String.format("%02d", tempMonths);
			String currentKey = "";

			// Generates calendar for current month if none exists
			while (currentKey.equals("")) {
				Set<String> keys = this.scheduleMap.keySet();
				for (String key : keys) {
					if (key.startsWith(keyStart)) {
						currentKey = key;
						break;
					}
				}
				if (currentKey.equals("")) {
					Thread t = new Thread(this.schedule);
					t.start();
					//this.schedule.calculateNextMonth();
				}
			}

			DefaultTableModel table = tableCreate(tempMonths, currentYear);

			this.scheduleTable.setModel(table);
			HTMLGenerator.addMonth(this.monthName, table);
		}

	}