Ich hab jetzt ein bisschen getestet, um den Algorithmus für das Zeichnen offenzulegen. (Standarteinstellung). Er scheint bei mir immer von unten nach oben zu zeichnen, solltest du also mal keine Symmetrie haben, so muss gelten, dass:
Intervallgröße*n = -min, mit n ist eine Natürliche Zahl und min <0, max>0. Also wenn du
chart1.ChartAreas[0].AxisY.Interval =-min / i;
wählst mit i ist eine Natürliche Zahl.
Nur dann gibt i nicht die Anzahl der Itervalle an, sondern nur die Anzahl der Intervalle zwischen min und 0. Für eine bestimmte Anzahl an Intervalle müsstest du dann i in Abhängigkeit von max wählen.
int intervalCount = ...;
double max =..., min = ...;
double intervalSize = (max-min) / intervalCount;
i = Math.Max((int)Math.Round(-min/intervalSize),1);
chart1.ChartAreas[0].AxisY.Interval =-min / i;
Das haut zwar mit der Anzahl der Intervalle nicht immer genau hin, da i ja eine Natürliche Zahl sein muss, aber es liefert meiner Meinung dennoch ein ausreichendes Ergebnis (nur bei |min|<<|max|, min viel kleiner als max) führt es zu vielen Intervallen.