 
 void displayReadings(int timerId) {
 	time_t t = getTime();
+	char temp1[COLUMNS + 1];
+	char temp2[COLUMNS + 1];
+	char temp3[COLUMNS + 1];
 
 	lcd.setCursor(0,0);
 
-	sprintf(display.row[1], "Humidity: %d%%", (int) config.humidityPercent);
-
-	char temp1[20];
-	char temp2[30];
+	ftoa(temp1, config.humidityPercent, 1);
+	sprintf(display.row[1], "Humidity:      %s%%", temp1);
 
 	ftoa(temp1, config.pressureMb, 1);
-
 	// now check the difference in the last 3 hours
 	int hourToCompare = hour(t) - 3; // 3 behind
 	if (hourToCompare < 0)
 		hourToCompare = 24 + hourToCompare; // handle midnight
 
+	// reset hourly pressure when we boot.
+	for (int i = 0; i < 24; i++ ) {
+		if (hourlyPressure[i] == 0) {
+			hourlyPressure[i] = config.pressureMb;
+		}
+	}
+
 	float delta = config.pressureMb - hourlyPressure[hourToCompare];
-	sprintf(temp2, "%s", (delta > 0 ? "^" : "V"));
-	sprintf(display.row[2], "Air: %smb (%s)", temp1, temp2);
+	ftoa(temp2, abs(delta), 1);
+	sprintf(temp3, "%s", (delta > 0 ? "+" : "-"));
+	if (abs(delta) < 0.001 ) sprintf(temp3, " ");
+
+	sprintf(display.row[2], "Air: [%s%s] %smb", temp3, temp2, temp1);
 
 	float tmp = (config.temperatureBMPinF + config.temperatureDHTinF) / 2.0;
 
-	char temp[20];
-	ftoa(temp, 5.0 / 9.0 * (tmp - 32.0), 1);
+	ftoa(temp3, 5.0 / 9.0 * (tmp - 32.0), 1);
 	ftoa(buffer, tmp, 1);
 
-	sprintf(display.row[3], "Temp: %s%cF %s%cC", buffer,
-		DEGREE_SYMBOL, temp,
+	sprintf(display.row[3], "Temp:  %s%cF %s%cC", buffer,
+		DEGREE_SYMBOL, temp3,
 		DEGREE_SYMBOL);
 
 	for (int i = 0; i < 4; i++) {

	memset(&display, 0x0, sizeof(displayType));
	memset(&hourlyPressure, 0x0, sizeof(hourlyPressure)*sizeof(uint16_t));

	Serial.print("Resetting memory structures.");
	Serial.println(sizeof(displayType));
	Serial.println(sizeof(hourlyPressure) * sizeof(uint16_t));


} configType;

typedef struct displayStruct {
	char row[4][COLUMNS + 1];
} displayType;

char buffer[COLUMNS];
displayType display;
configType config = { 10 };

