     logln("Checking sail trim");
     if (abs(current_roll) > START_HEEL_COMP)
       heel_adjust = min(MAX_HEEL_COMP, 2 * (abs(current_roll) - START_HEEL_COMP));
+    else if (heel_adjust > MIN_HEEL_COMP)
+      heel_adjust = heel_adjust * HEEL_COMP_DECAY;
+    else
+      heel_adjust = 0;
 
     float new_winch = map(abs(wind - 180), 30, 170, WINCH_MIN, WINCH_MAX) - heel_adjust;
     


// minimum speed needed to establish course (knots)
#define MIN_SPEED 1.0

// how close you have to get to the waypoint to consider it hit
#define GET_WITHIN 5

        if (!skip_irons_check && IN_IRONS(new_wind)) {
            logln("Requested (new wind %d) course unsafe, requires tack", new_wind);
            // and if we're allowed to tack, we tack
            if (CAN_TURN() && gps_speed > MIN_TACK_SPEED) {
                logln("Tack change allowed. Turning.");
                tack();
                last_turn = millis();
