 const int FullBrake = 225;  // start with a conservative value; could go as high as 255;  
 const int MinimumBrake = 155; // start with a conservative value; could go as low as 127;
 
-const int HardLeft = 159; // start with a conservative value; could go as low as 127;
-const int HalfLeft = 159;
+const int HardLeft = 223; // was 159; // start with a conservative value; could go as high as 255;
+const int HalfLeft = 223; // was 159;
 const int Straight = 191;
-const int HalfRight = 223;
-const int HardRight = 223; // start with a conservative value; could go as high as  255;
+const int HalfRight = 159; // was 223;
+const int HardRight = 159; // was 223; // start with a conservative value; could go as low as 127;
+const int StraightFB = 501;
+const int HalfRightFB = 303;
+const int HalfLeftFB = 760;
+/* There is hysteresis on steering.
+  E.g. Move to the left until PWM 223, getting FB of 760.
+  If moves to the right are then commanded, feedback will not change until PWM of about 217.
+*/
 /*  Elcano Servo range is 50 mm for brake, 100 mm for steering.
 
     Elcano servo has a hardware controller that moves to a

        pinMode(CruiseThrottle, INPUT);
        pinMode(CruiseBrake, INPUT); 
        pinMode(CruiseSteer, INPUT);
#ifdef MEGA
        pinMode(Current36V, INPUT);
        pinMode(CurrentBrake, INPUT);
        pinMode(CurrentSteer, INPUT);

       Serial.print(i); Serial.print(", ");
//       Serial.print(current); Serial.print(", ");
       Serial.println(feedback);
       delay(900);   // hold each steer position 1 second.

}
/*---------------------------------------------------------------------------------------*/ 
void CalibrateSteering(int SteerPosition, int delta)
{
  // This routine establishes the correct values for HardLeft, HardRight, Straight, etc.
  // Verify that the values for left are those that turn the vehicle to the let.
  // It allows us to establish the constants to map the feedback to the commanded position.
  
  // PWM signal is only effective from 127 to 255.
  // Some of the extreme values produce no motion in an unattached servo.
  // When the servo is atached to the steering link, pushing too hard can draw too much power and blow a fuse.
  
  // Perform this test first with an unattached servo.
  // Repeat with an attached servo.
  
 // It would be a good idea to put an ammeter on the steering servo to verify that excess current is not being drawn;
 // In case current gets too high, abort by unplugging the servo.
  // Use the serial monitor, and save the results for analysis.
  
  // Mechanically position the steering link so that servo motion half-way between extremes is straight ahead.

       delta = abs(delta);
       int i;
       Serial.println("Calibrate steering");
       if (SteerPosition >= Straight)
       { 
         for (i = Straight; i <= SteerPosition; i += delta)
             moveSteer(i);
         for (i = SteerPosition; i >= Straight; i -= delta)
             moveSteer(i);
       }
       else
      { 
         for (i = Straight; i >= SteerPosition; i -= delta)
             moveSteer(i);
         for (i = SteerPosition; i <= Straight; i += delta)
             moveSteer(i);

       }       
      moveSteer(Straight);    
    
}
int compareint (const void * a, const void * b)
{
