Many surfaces can be modeled by interpolating data points digitized from existing products. But the digitized data points could have measuring errors. To adjust the points, fairing is performed. We present an automatic local fairing algorithm using nonlinear programming. For the objective function of the algorithm, we derive discrete fairness metrics. The metrics are consisted of discrete principal curvatures. The discrete principal curvatures are calculated with the given data points.