Index: /BAORadio/libindi/libindi/.kdev4/libindi.kdev4
===================================================================
--- /BAORadio/libindi/libindi/.kdev4/libindi.kdev4	(revision 692)
+++ /BAORadio/libindi/libindi/.kdev4/libindi.kdev4	(revision 693)
@@ -4,5 +4,5 @@
 [CMake]
 BuildDirs=/home/richard/libindi/libindi_build
-CMakeDir=/usr/share/cmake/Modules
+CMakeDir=/usr/share/cmake-2.8/Modules
 Current CMake Binary=file:///usr/bin/cmake
 CurrentBuildDir=file:///home/richard/libindi/libindi_build
Index: /BAORadio/libindi/libindi/BAOTest/Makefile
===================================================================
--- /BAORadio/libindi/libindi/BAOTest/Makefile	(revision 692)
+++ /BAORadio/libindi/libindi/BAOTest/Makefile	(revision 693)
@@ -21,2 +21,3 @@
 install:
 	cp BAOtest /usr/bin
+	chmod +x /usr/bin/BAOtest
Index: /BAORadio/libindi/libindi/BAOcontrol/BAOcontrol.pro
===================================================================
--- /BAORadio/libindi/libindi/BAOcontrol/BAOcontrol.pro	(revision 692)
+++ /BAORadio/libindi/libindi/BAOcontrol/BAOcontrol.pro	(revision 693)
@@ -1,4 +1,4 @@
 ######################################################################
-# Automatically generated by qmake (2.01a) mer. juil. 11 05:34:37 2012
+# Automatically generated by qmake (2.01a) Thu Sep 13 21:57:57 2012
 ######################################################################
 
Index: /BAORadio/libindi/libindi/BAOcontrol/Listener.cpp
===================================================================
--- /BAORadio/libindi/libindi/BAOcontrol/Listener.cpp	(revision 692)
+++ /BAORadio/libindi/libindi/BAOcontrol/Listener.cpp	(revision 693)
@@ -33,4 +33,5 @@
 
 using namespace std;
+
 
 void Listener::prepareSelectFds(fd_set &read_fds,
Index: /BAORadio/libindi/libindi/BAOcontrol/Makefile
===================================================================
--- /BAORadio/libindi/libindi/BAOcontrol/Makefile	(revision 692)
+++ /BAORadio/libindi/libindi/BAOcontrol/Makefile	(revision 693)
@@ -1,5 +1,5 @@
 #############################################################################
 # Makefile for building: BAOcontrol
-# Generated by qmake (2.01a) (Qt 4.7.4) on: mer. juil. 11 05:34:37 2012
+# Generated by qmake (2.01a) (Qt 4.8.1) on: Thu Sep 13 21:57:57 2012
 # Project:  BAOcontrol.pro
 # Template: app
@@ -11,11 +11,11 @@
 CC            = gcc
 CXX           = g++
-DEFINES       = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED
+DEFINES       = -DQT_WEBKIT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED
 CFLAGS        = -m64 -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
 CXXFLAGS      = -m64 -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
-INCPATH       = -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I. -I. -I.
+INCPATH       = -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I.
 LINK          = g++
 LFLAGS        = -m64 -Wl,-O1
-LIBS          = $(SUBLIBS)  -L/usr/lib64 -lQtGui -L/usr/lib64 -L/usr/X11R6/lib64 -lQtCore -lpthread 
+LIBS          = $(SUBLIBS)  -L/usr/lib/x86_64-linux-gnu -lQtGui -lQtCore -lpthread 
 AR            = ar cqs
 RANLIB        = 
@@ -93,9 +93,12 @@
 		moc_qledindicator.o \
 		moc_selectstars.o
-DIST          = /usr/share/qt4/mkspecs/common/g++.conf \
-		/usr/share/qt4/mkspecs/common/unix.conf \
+DIST          = /usr/share/qt4/mkspecs/common/unix.conf \
 		/usr/share/qt4/mkspecs/common/linux.conf \
+		/usr/share/qt4/mkspecs/common/gcc-base.conf \
+		/usr/share/qt4/mkspecs/common/gcc-base-unix.conf \
+		/usr/share/qt4/mkspecs/common/g++-base.conf \
+		/usr/share/qt4/mkspecs/common/g++-unix.conf \
 		/usr/share/qt4/mkspecs/qconfig.pri \
-		/usr/share/qt4/mkspecs/modules/qt_phonon.pri \
+		/usr/share/qt4/mkspecs/modules/qt_webkit_version.pri \
 		/usr/share/qt4/mkspecs/features/qt_functions.prf \
 		/usr/share/qt4/mkspecs/features/qt_config.prf \
@@ -104,4 +107,5 @@
 		/usr/share/qt4/mkspecs/features/release.prf \
 		/usr/share/qt4/mkspecs/features/default_post.prf \
+		/usr/share/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
 		/usr/share/qt4/mkspecs/features/warn_on.prf \
 		/usr/share/qt4/mkspecs/features/qt.prf \
@@ -145,9 +149,12 @@
 	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
 
-Makefile: BAOcontrol.pro  /usr/share/qt4/mkspecs/default/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \
-		/usr/share/qt4/mkspecs/common/unix.conf \
+Makefile: BAOcontrol.pro  /usr/share/qt4/mkspecs/linux-g++-64/qmake.conf /usr/share/qt4/mkspecs/common/unix.conf \
 		/usr/share/qt4/mkspecs/common/linux.conf \
+		/usr/share/qt4/mkspecs/common/gcc-base.conf \
+		/usr/share/qt4/mkspecs/common/gcc-base-unix.conf \
+		/usr/share/qt4/mkspecs/common/g++-base.conf \
+		/usr/share/qt4/mkspecs/common/g++-unix.conf \
 		/usr/share/qt4/mkspecs/qconfig.pri \
-		/usr/share/qt4/mkspecs/modules/qt_phonon.pri \
+		/usr/share/qt4/mkspecs/modules/qt_webkit_version.pri \
 		/usr/share/qt4/mkspecs/features/qt_functions.prf \
 		/usr/share/qt4/mkspecs/features/qt_config.prf \
@@ -156,4 +163,5 @@
 		/usr/share/qt4/mkspecs/features/release.prf \
 		/usr/share/qt4/mkspecs/features/default_post.prf \
+		/usr/share/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
 		/usr/share/qt4/mkspecs/features/warn_on.prf \
 		/usr/share/qt4/mkspecs/features/qt.prf \
@@ -165,12 +173,15 @@
 		/usr/share/qt4/mkspecs/features/lex.prf \
 		/usr/share/qt4/mkspecs/features/include_source_dir.prf \
-		/usr/lib64/libQtGui.prl \
-		/usr/lib64/libQtCore.prl
+		/usr/lib/x86_64-linux-gnu/libQtGui.prl \
+		/usr/lib/x86_64-linux-gnu/libQtCore.prl
 	$(QMAKE) -o Makefile BAOcontrol.pro
-/usr/share/qt4/mkspecs/common/g++.conf:
 /usr/share/qt4/mkspecs/common/unix.conf:
 /usr/share/qt4/mkspecs/common/linux.conf:
+/usr/share/qt4/mkspecs/common/gcc-base.conf:
+/usr/share/qt4/mkspecs/common/gcc-base-unix.conf:
+/usr/share/qt4/mkspecs/common/g++-base.conf:
+/usr/share/qt4/mkspecs/common/g++-unix.conf:
 /usr/share/qt4/mkspecs/qconfig.pri:
-/usr/share/qt4/mkspecs/modules/qt_phonon.pri:
+/usr/share/qt4/mkspecs/modules/qt_webkit_version.pri:
 /usr/share/qt4/mkspecs/features/qt_functions.prf:
 /usr/share/qt4/mkspecs/features/qt_config.prf:
@@ -179,4 +190,5 @@
 /usr/share/qt4/mkspecs/features/release.prf:
 /usr/share/qt4/mkspecs/features/default_post.prf:
+/usr/share/qt4/mkspecs/features/unix/gdb_dwarf_index.prf:
 /usr/share/qt4/mkspecs/features/warn_on.prf:
 /usr/share/qt4/mkspecs/features/qt.prf:
@@ -188,6 +200,6 @@
 /usr/share/qt4/mkspecs/features/lex.prf:
 /usr/share/qt4/mkspecs/features/include_source_dir.prf:
-/usr/lib64/libQtGui.prl:
-/usr/lib64/libQtCore.prl:
+/usr/lib/x86_64-linux-gnu/libQtGui.prl:
+/usr/lib/x86_64-linux-gnu/libQtCore.prl:
 qmake:  FORCE
 	@$(QMAKE) -o Makefile BAOcontrol.pro
@@ -237,19 +249,19 @@
 		Server.hpp \
 		baoqt.h
-	/usr/bin/moc $(DEFINES) $(INCPATH) baoqt.h -o moc_baoqt.cpp
+	/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) baoqt.h -o moc_baoqt.cpp
 
 moc_liste.cpp: liste.h
-	/usr/bin/moc $(DEFINES) $(INCPATH) liste.h -o moc_liste.cpp
+	/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) liste.h -o moc_liste.cpp
 
 moc_map.cpp: ../communs/const.h \
 		map.h
-	/usr/bin/moc $(DEFINES) $(INCPATH) map.h -o moc_map.cpp
+	/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) map.h -o moc_map.cpp
 
 moc_qledindicator.cpp: qledindicator.h
-	/usr/bin/moc $(DEFINES) $(INCPATH) qledindicator.h -o moc_qledindicator.cpp
+	/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) qledindicator.h -o moc_qledindicator.cpp
 
 moc_selectstars.cpp: ui_selectstars.h \
 		selectstars.h
-	/usr/bin/moc $(DEFINES) $(INCPATH) selectstars.h -o moc_selectstars.cpp
+	/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) selectstars.h -o moc_selectstars.cpp
 
 compiler_rcc_make_all:
@@ -264,14 +276,14 @@
 	-$(DEL_FILE) ui_baoqt.h ui_liste.h ui_map.h ui_selectstars.h
 ui_baoqt.h: baoqt.ui
-	/usr/bin/uic baoqt.ui -o ui_baoqt.h
+	/usr/bin/uic-qt4 baoqt.ui -o ui_baoqt.h
 
 ui_liste.h: liste.ui
-	/usr/bin/uic liste.ui -o ui_liste.h
+	/usr/bin/uic-qt4 liste.ui -o ui_liste.h
 
 ui_map.h: map.ui
-	/usr/bin/uic map.ui -o ui_map.h
+	/usr/bin/uic-qt4 map.ui -o ui_map.h
 
 ui_selectstars.h: selectstars.ui
-	/usr/bin/uic selectstars.ui -o ui_selectstars.h
+	/usr/bin/uic-qt4 selectstars.ui -o ui_selectstars.h
 
 compiler_yacc_decl_make_all:
Index: /BAORadio/libindi/libindi/BAOcontrol/baocontrol.cpp
===================================================================
--- /BAORadio/libindi/libindi/BAOcontrol/baocontrol.cpp	(revision 692)
+++ /BAORadio/libindi/libindi/BAOcontrol/baocontrol.cpp	(revision 693)
@@ -21,5 +21,5 @@
     float a1, a2, a3;
     
-    char Version[200];
+    char *Version;
 
     // Le choix de la couleur des caractÃšres est adaptÃ© pour une fenÃªtre de terminal
@@ -29,4 +29,6 @@
 
     // Affichage de la version du programme
+    
+    Version = new char[1000];
 
     sprintf(Version,"\n\n\n\n\n \
@@ -40,4 +42,6 @@
     
     AfficherLog(Version, true);
+    
+    delete [] Version;
 
 
@@ -240,4 +244,5 @@
 
     Connect(true);
+   
 }
 
@@ -1291,5 +1296,5 @@
     }
 
-    AfficherLog("Les paramÃštres de l'alignemeent ont bien Ã©tÃ© sauvegardÃ©s.\n\n", true);
+    AfficherLog("Les paramÃštres de l'alignement ont bien Ã©tÃ© sauvegardÃ©s.\n\n", true);
 
     return true;
Index: /BAORadio/libindi/libindi/BAOcontrol/baoqt.cpp
===================================================================
--- /BAORadio/libindi/libindi/BAOcontrol/baoqt.cpp	(revision 692)
+++ /BAORadio/libindi/libindi/BAOcontrol/baoqt.cpp	(revision 693)
@@ -5,5 +5,4 @@
 
 
-
 BAOqt::BAOqt(QWidget *parent) :
     QDialog(parent),
@@ -11,5 +10,6 @@
     ui(new Ui::BAOqt)
 {
-    QPoint pointPos;
+ 
+  QPoint pointPos;
 
     RechercheOptimisation = false;
@@ -21,5 +21,4 @@
     last_pos[2] = current_pos[2] = desired_pos[2] = 0.0;
     next_pos_time = -0x8000000000000000LL;
-
 
     bao = new BAOcontrol();
@@ -113,6 +112,6 @@
 #endif
 
-    ui->lineEditIP->setText("127.0.0.1");
-    //ui->lineEditIP->setText("134.158.88.199");
+    //ui->lineEditIP->setText("127.0.0.1");
+    ui->lineEditIP->setText("134.158.88.199");
     
     ui->lineEdit_2->setText((QString("BAORadio, LAL, version ").append(VERSION)).toStdString().c_str());
@@ -293,4 +292,5 @@
 
 #ifdef JOYSTICK
+    
     joy++;
 
Index: /BAORadio/libindi/libindi/LancementBAOcontrol.sh
===================================================================
--- /BAORadio/libindi/libindi/LancementBAOcontrol.sh	(revision 692)
+++ /BAORadio/libindi/libindi/LancementBAOcontrol.sh	(revision 693)
@@ -4,4 +4,5 @@
 
 xterm -ge 150x40 -e indiserver indi_BAO&
+
 sleep 1
 
Index: /BAORadio/libindi/libindi/Makefile
===================================================================
--- /BAORadio/libindi/libindi/Makefile	(revision 692)
+++ /BAORadio/libindi/libindi/Makefile	(revision 693)
@@ -14,5 +14,5 @@
 CFLAGS        = -m64 -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
 CXXFLAGS      = -m64 -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
-INCPATH       = -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I. -Ilibs -IBAOcontrol -Icommuns -Ilibs/indibase -Iexamples -Idrivers/ccd -Idrivers/filter_wheel -Idrivers/focuser -Idrivers/telescope -Idrivers/video -Ilibs/webcam -IIndi_Stellarium/src -I. -I.
+INCPATH       = -I/usr/share/qt4/mkspecs/default -I/usr/include/qt4 -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include -I. -Ilibs -IBAOcontrol -Icommuns -Ilibs/indibase -Iexamples -Idrivers/ccd -Idrivers/filter_wheel -Idrivers/focuser -Idrivers/telescope -Idrivers/video -Ilibs/webcam -IIndi_Stellarium/src -I. -I.
 LINK          = g++
 LFLAGS        = -m64 -Wl,-O1
Index: /BAORadio/libindi/libindi/bao.sh
===================================================================
--- /BAORadio/libindi/libindi/bao.sh	(revision 692)
+++ /BAORadio/libindi/libindi/bao.sh	(revision 693)
@@ -59,4 +59,5 @@
 make
 cp BAOcontrol /usr/bin
+chmod +x /usr/bin/BAOcontrol
 echo ;
 echo ;
Index: /BAORadio/libindi/libindi/communs/alignement.cpp
===================================================================
--- /BAORadio/libindi/libindi/communs/alignement.cpp	(revision 692)
+++ /BAORadio/libindi/libindi/communs/alignement.cpp	(revision 693)
@@ -9,6 +9,5 @@
 
 #include "alignement.h"
-#include <QtCore/qcoreevent.h>
-
+//#include <QtCore/qcoreevent.h>
 
 /**************************************************************************************
@@ -738,5 +737,5 @@
     double I2 = -2.0 * ED * sqrt( CD2pBC2 ) * sin(  ( targetAlt - Theta ) * Pidiv180 );
 
-    I2 += ED * ED + CD2pBC2 - AE *AE;
+    I2 += ED * ED + CD2pBC2 - AE * AE;
 
     double Codalt = ( sqrt(I2) - I0 ) / CoeffMoteur;
@@ -749,14 +748,14 @@
     double CD2pBC2 = CD * CD + BC * BC;
 
-    double I2=pow((CoeffMoteur * pas + I0) ,2.0);
-
-    I2 -= ED *ED + CD2pBC2 -AE*AE;
-
-    double angle = asin(I2/( -2.0*ED*sqrt(CD2pBC2)))*N180divPi+Theta;
+    double I2 = pow(( CoeffMoteur * pas + I0 ) ,2.0);
+
+    I2 -= ED * ED + CD2pBC2 - AE * AE;
+
+    double angle = asin( I2 / ( -2.0 * ED * sqrt(CD2pBC2) )) * N180divPi + Theta;
 
     return angle;
 }
 
-void Alignement::OptimisationGeometrieAntenne()
+void Alignement::OptimisationGeometrieAntenne(bool Chercher)
 {
     Coord c1, c2, c3, c4, m1, m2, m3, mm1, mm2, mm3, mm,mmm, result;
@@ -776,7 +775,7 @@
     double det;
 
-    double maxdet= 0.1;
-
-    double distmax2=1e50;
+    double maxdet = 0.1;
+
+    double distmax2 = 1e50;
 
     double pas = 1.0; //0.1
@@ -784,18 +783,18 @@
     double interv = 20.0; //0.5
 
-    InitParametresInstrument();
-
-   /* for (int i=0; i<nbrcorrections; i++)
-    {
-        Precession(&ad[i], &de[i]);
-       NutationEtoile(&ad[i], &de[i]);
-
-        AberrationAnnuelle(&ad[i], &de[i]);
-	
-	 Precession(&delta_ad[i], &delta_de[i]);
-       NutationEtoile(&delta_ad[i], &delta_de[i]);
-
-        AberrationAnnuelle(&delta_ad[i], &delta_de[i]);
-    }*/
+
+
+    /* for (int i=0; i<nbrcorrections; i++)
+     {
+         Precession(&ad[i], &de[i]);
+        NutationEtoile(&ad[i], &de[i]);
+
+         AberrationAnnuelle(&ad[i], &de[i]);
+
+     Precession(&delta_ad[i], &delta_de[i]);
+        NutationEtoile(&delta_ad[i], &delta_de[i]);
+
+         AberrationAnnuelle(&delta_ad[i], &delta_de[i]);
+     }*/
 
     c1.x = VerifAngle(ad[0] - tsl[0] + GetTSL());
@@ -831,154 +830,161 @@
     m3.x = VerifAngle(delta_ad[2] - tsl[2] + GetTSL());
     m3.y = delta_de[2];
-    
-    CoeffMoteur = CoeffMoteur0;
-
-   //  for (i=-interv; i< interv; i += pas)
-    {
-        I0 = I00 ;//+ i ;
-
-        for (j=-interv; j<interv; j += pas)
+
+
+    if (Chercher)
+    {
+        InitParametresInstrument();
+
+        CoeffMoteur = CoeffMoteur0;
+
+        //  for (i=-interv; i< interv; i += pas)
         {
-            ED = ED0 + j;
-
-            for (k=-interv; k<interv; k += pas)
+            I0 = I00 ;//+ i ;
+
+            for (j=-interv; j<interv; j += pas)
             {
-                CD = CD0 + k;
-
-                for (l=-interv; l < interv; l+= pas)
+                ED = ED0 + j;
+
+                for (k=-interv; k<interv; k += pas)
                 {
-                    BC = BC0 + l;
-
-                    Theta = (atan(CD / BC) - atan(18.5 / ED)) * N180divPi;
-
-                    for (m=-interv; m< interv; m += pas)
+                    CD = CD0 + k;
+
+                    for (l=-interv; l < interv; l+= pas)
                     {
-                        AE = AE0 + m;
-
-                        Azimut(m1.x, m1.y, &mm.x, &mm.y);
-
-                        mm.y = Motor2Alt2(Alt2Motor(mm.y * N180divPi)) * Pidiv180;
-
-                        mm1.x = cos(mm.x) * cos(mm.y);
-                        mm1.y = sin(mm.x) * cos(mm.y);
-                        mm1.z = sin(mm.y);
-
-                        Azimut(m2.x, m2.y, &mm.x, &mm.y);
-
-                        mm.y = Motor2Alt2(Alt2Motor(mm.y * N180divPi)) * Pidiv180;
-
-                        mm2.x = cos(mm.x) * cos(mm.y);
-                        mm2.y = sin(mm.x) * cos(mm.y);
-                        mm2.z = sin(mm.y);
-
-                        Azimut(m3.x, m3.y, &mm.x, &mm.y);
-
-                        mm.y = Motor2Alt2(Alt2Motor(mm.y * N180divPi)) * Pidiv180;
-
-                        mm3.x = cos(mm.x) * cos(mm.y);
-                        mm3.y = sin(mm.x) * cos(mm.y);
-                        mm3.z = sin(mm.y);
-
-                        // Calcul de la matrice de correction en fonction de la mÃ©thode d'alignement
-
-                        Matrice_ok = ElementsMatriceSimple(c1, c2, c3 ,mm1, mm2, mm3);
-
-                        det = Determinant();
-
-
-
-                        if ( fabs(det - 1.0) <= 0.08/*maxdet*/ )
+                        BC = BC0 + l;
+
+                        Theta = (atan(CD / BC) - atan(18.5 / ED)) * N180divPi;
+
+                        for (m=-interv; m< interv; m += pas)
                         {
-
-                            double targetAz, targetAlt;
-                            double distmax=0.0;
-                            double dist;
-
-                            for (int n=0; n<nbrcorrections; n++)
+                            AE = AE0 + m;
+
+                            Azimut(m1.x, m1.y, &mm.x, &mm.y);
+
+                            mm.y = Motor2Alt2(Alt2Motor(mm.y * N180divPi)) * Pidiv180;
+
+                            mm1.x = cos(mm.x) * cos(mm.y);
+                            mm1.y = sin(mm.x) * cos(mm.y);
+                            mm1.z = sin(mm.y);
+
+                            Azimut(m2.x, m2.y, &mm.x, &mm.y);
+
+                            mm.y = Motor2Alt2(Alt2Motor(mm.y * N180divPi)) * Pidiv180;
+
+                            mm2.x = cos(mm.x) * cos(mm.y);
+                            mm2.y = sin(mm.x) * cos(mm.y);
+                            mm2.z = sin(mm.y);
+
+                            Azimut(m3.x, m3.y, &mm.x, &mm.y);
+
+                            mm.y = Motor2Alt2(Alt2Motor(mm.y * N180divPi)) * Pidiv180;
+
+                            mm3.x = cos(mm.x) * cos(mm.y);
+                            mm3.y = sin(mm.x) * cos(mm.y);
+                            mm3.z = sin(mm.y);
+
+                            // Calcul de la matrice de correction en fonction de la mÃ©thode d'alignement
+
+                            Matrice_ok = ElementsMatriceSimple(c1, c2, c3 ,mm1, mm2, mm3);
+
+                            det = Determinant();
+
+
+
+                            if ( fabs(det - 1.0) <= 0.08/*maxdet*/ )
                             {
-                                Azimut(VerifAngle(ad[n] - tsl[n] + GetTSL()),  de[n], &mmm.x, &mmm.y);
-
-                                mmm.y = Motor2Alt(Alt2Motor2(mmm.y * N180divPi)) * Pidiv180;
-
-                                c4.x = cos(mmm.x) * cos(mmm.y);
-                                c4.y = sin(mmm.x) * cos(mmm.y);
-                                c4.z = sin(mmm.y);
-
-                                AppliquerMatriceCorrectionSimple(&result, c4);
-
-                                if (result.x != 0.0)
+
+                                double targetAz, targetAlt;
+                                double distmax = 0.0;
+                                double dist;
+
+                                for (int n=0; n<nbrcorrections; n++)
                                 {
-                                    targetAz = atan( result.y / result.x );
-
-                                    if (result.x < 0) targetAz += Pi;
+                                    Azimut(VerifAngle(ad[n] - tsl[n] + GetTSL()),  de[n], &mmm.x, &mmm.y);
+
+                                    mmm.y = Motor2Alt(Alt2Motor2(mmm.y * N180divPi)) * Pidiv180;
+
+                                    c4.x = cos(mmm.x) * cos(mmm.y);
+                                    c4.y = sin(mmm.x) * cos(mmm.y);
+                                    c4.z = sin(mmm.y);
+
+                                    AppliquerMatriceCorrectionSimple(&result, c4);
+
+                                    if (result.x != 0.0)
+                                    {
+                                        targetAz = atan( result.y / result.x );
+
+                                        if (result.x < 0) targetAz += Pi;
+                                    }
+                                    else targetAz = Pidiv2;
+
+                                    targetAz  = VerifAngle(targetAz);
+
+                                    targetAlt = asin(result.z);
+
+
+                                    Azimut(VerifAngle(delta_ad[n] - tsl[n] + GetTSL()),  delta_de[n], &mm.x, &mm.y);
+
+                                    dist = DistanceAngulaireEntre2Points(targetAz, targetAlt, mm.x, mm.y);
+
+                                    if (dist> distmax) distmax=dist;
                                 }
-                                else targetAz = Pidiv2;
-
-                                targetAz  = VerifAngle(targetAz);
-
-                                targetAlt = asin(result.z);
-
-
-                                Azimut(VerifAngle(delta_ad[n] - tsl[n] + GetTSL()),  delta_de[n], &mm.x, &mm.y);
-
-                                dist = DistanceAngulaireEntre2Points(targetAz, targetAlt, mm.x, mm.y);
-
-                                if (dist> distmax) distmax=dist;
+
+
+
+                                if (distmax< distmax2)
+                                {
+                                    os << "Determinant=" << det << "\n";
+
+                                    os << "I0=" << I0 << " CD="<< CD << " ED=" << ED << " BC=" << BC << " AE=" << AE << " Theta=" << Theta << " CoeffMoteur=" << CoeffMoteur << "\n";
+
+                                    os << DHMS(distmax*N180divPi, false) << "\n\n";
+
+                                    AfficherLog(os.str(), true);
+                                    os.str("");
+
+                                    distmax2=distmax;
+                                    //maxdet=distmax;
+
+                                    memCD = CD;
+                                    memI0 = I0;
+                                    memED = ED;
+                                    memAE = AE;
+                                    memBC = BC;
+                                    memTheta = Theta;
+                                    memCoeffMoteur = CoeffMoteur;
+                                }
+
+                                maxdet = fabs(det - 1.0);
                             }
-
-
-
-                            if (distmax< distmax2)
-                            {
-                                os << "Determinant=" << det << "\n";
-
-                                os << "I0=" << I0 << " CD="<< CD << " ED=" << ED << " BC=" << BC << " AE=" << AE << " Theta=" << Theta << " CoeffMoteur=" << CoeffMoteur << "\n";
-
-                                os << DHMS(distmax*N180divPi, false) << "\n\n";
-
-                                AfficherLog(os.str(), true);
-                                os.str("");
-
-                                distmax2=distmax;
-                                //maxdet=distmax;
-
-                                memCD = CD;
-				memI0 = I0;
-                                memED = ED;
-                                memAE = AE;
-                                memBC = BC;
-                                memTheta = Theta;
-                                memCoeffMoteur = CoeffMoteur;
-                            }
-                            
-                            maxdet = fabs(det - 1.0);
                         }
                     }
-                }	      
-	    }
-	      if ((int)Arrondi((interv - j) / (2.0 * interv) * 100.0) % 10 == 0)
-        {           
-            os << 100.0 - (interv - j) / (2.0 * interv) * 100.0 << " %\n";
-            AfficherLog(os.str(), true); 
-	     os.str("");
+                }
+                if ((int)Arrondi((interv - j) / (2.0 * interv) * 100.0) % 10 == 0)
+                {
+                    os << 100.0 - (interv - j) / (2.0 * interv) * 100.0 << " %\n";
+                    AfficherLog(os.str(), true);
+                    os.str("");
+                }
+
+            }
+
         }
-       
-        }
-       
-    }
-
-
-    CD = memCD;
-    ED = memED;
-    AE = memAE;
-    BC = memBC;
-    I0 = memI0;
-    Theta = memTheta;
-    CoeffMoteur = memCoeffMoteur;
-
-    os << "\n\nParamÃštres  : I0=" << I0 << " CD=" << CD << " ED=" << ED << " BC=" << BC << " AE=" << AE << " Theta=" << Theta << " CoeffMoteur=" << CoeffMoteur << "\n\nFin du calcul\n";
-
-
-    AfficherLog(os.str(), true);
+
+
+        CD = memCD;
+        ED = memED;
+        AE = memAE;
+        BC = memBC;
+        I0 = memI0;
+        Theta = memTheta;
+        CoeffMoteur = memCoeffMoteur;
+
+        os << "\n\nParamÃštres  : I0=" << I0 << " CD=" << CD << " ED=" << ED << " BC=" << BC << " AE=" << AE << " Theta=" << Theta << " CoeffMoteur=" << CoeffMoteur << "\n\nFin de l'optimisation\n";
+
+
+        AfficherLog(os.str(), true);
+
+    }
 
     Azimut(m1.x, m1.y, &mm.x, &mm.y);
@@ -1045,4 +1051,11 @@
 
     CalculTSL();
+
+    if ( BC!=BC0 || CD!=CD0 || ED!=ED0 || AE!=AE0 || I0!=I00 || CoeffMoteur!=CoeffMoteur0 )
+    {
+        OptimisationGeometrieAntenne(false);
+
+        return;
+    }
 
     switch ( MethodeAlignement )
@@ -1303,4 +1316,18 @@
     char *tsl_data = NULL;
 
+    char *c_BC = NULL;
+
+    char *c_CD = NULL;
+
+    char *c_ED = NULL;
+
+    char *c_AE = NULL;
+
+    char *c_I0 = NULL;
+
+    char *c_CoeffMoteur = NULL;
+
+    char *c_Theta = NULL;
+
     if (!is_readable(fileName)) return false;
 
@@ -1473,4 +1500,68 @@
 
 
+    os2 << "BC";
+
+    readINI((char*)os.str().c_str(), (char*)os2.str().c_str(), &c_BC,  (char*)fileName.c_str());
+
+    os2.str("");
+
+    os2 << "CD";
+
+    readINI((char*)os.str().c_str(), (char*)os2.str().c_str(), &c_CD,  (char*)fileName.c_str());
+
+    os2.str("");
+
+    os2 << "ED";
+
+    readINI((char*)os.str().c_str(), (char*)os2.str().c_str(), &c_ED,  (char*)fileName.c_str());
+
+    os2.str("");
+
+    os2 << "AE";
+
+    readINI((char*)os.str().c_str(), (char*)os2.str().c_str(), &c_AE,  (char*)fileName.c_str());
+
+    os2.str("");
+
+    os2 << "I0";
+
+    readINI((char*)os.str().c_str(), (char*)os2.str().c_str(), &c_I0,  (char*)fileName.c_str());
+
+    os2.str("");
+
+    os2 << "CoeffMoteur";
+
+    readINI((char*)os.str().c_str(), (char*)os2.str().c_str(), &c_CoeffMoteur,  (char*)fileName.c_str());
+
+    os2.str("");
+
+    os2 << "Theta";
+
+    readINI((char*)os.str().c_str(), (char*)os2.str().c_str(), &c_Theta,  (char*)fileName.c_str());
+
+    os2.str("");
+
+    if ( c_BC && c_CD && c_ED && c_AE && c_I0 && c_CoeffMoteur && c_Theta &&
+            atof(c_BC)!=0.0 && atof(c_CD)!=0.0 && atof(c_ED)!=0.0 && atof(c_AE)!=0.0 && atof(c_I0)!=0.0 && atof(c_CoeffMoteur)!=0.0 && atof(c_Theta)!=0.0 )
+    {
+        BC = atof(c_BC);
+
+        CD = atof(c_CD);
+
+        ED = atof(c_ED);
+
+        AE = atof(c_AE);
+
+        I0 = atof(c_I0);
+
+        CoeffMoteur = atof(c_CoeffMoteur);
+
+        Theta = atof(c_Theta);
+
+        IDLog("Chargement des parametres de l antenne\n", true);
+
+        modificationAlignement = true;
+    }
+
     // Si un des paramÃštres d'une antenne change pendant la procÃ©dure d'alignement ou que l'on a
     // plus de deux points d'alignement sur une antenne, alors on calcule la matrice de correction
@@ -1480,5 +1571,4 @@
         if  (nbrcorrections >=3 && AlignementEnCours == 0)
         {
-            // IDLog("Calcul matrice\n", true);
             CalculerMatriceCorrection(a, b);
         }
@@ -1498,4 +1588,18 @@
 
     SAFEDELETE_TAB(align_data);
+
+    SAFEDELETE_TAB(c_BC);
+
+    SAFEDELETE_TAB(c_CD);
+
+    SAFEDELETE_TAB(c_ED);
+
+    SAFEDELETE_TAB(c_AE);
+
+    SAFEDELETE_TAB(c_I0);
+
+    SAFEDELETE_TAB(c_CoeffMoteur);
+
+    SAFEDELETE_TAB(c_Theta);
 
     return true;
@@ -1659,4 +1763,68 @@
         }
 
+    os << "BC";
+    key     = os.str();
+    os.str("");
+    os << BC;
+    value = os.str();
+    os.str("");
+
+    writeINI((char*)section.c_str(), (char*)key.c_str(), (char*)value.c_str(), (char*)fileName.c_str());
+
+    os << "CD";
+    key     = os.str();
+    os.str("");
+    os << CD;
+    value = os.str();
+    os.str("");
+
+    writeINI((char*)section.c_str(), (char*)key.c_str(), (char*)value.c_str(), (char*)fileName.c_str());
+
+    os << "ED";
+    key     = os.str();
+    os.str("");
+    os << ED;
+    value = os.str();
+    os.str("");
+
+    writeINI((char*)section.c_str(), (char*)key.c_str(), (char*)value.c_str(), (char*)fileName.c_str());
+
+
+    os << "AE";
+    key     = os.str();
+    os.str("");
+    os << AE;
+    value = os.str();
+    os.str("");
+
+    writeINI((char*)section.c_str(), (char*)key.c_str(), (char*)value.c_str(), (char*)fileName.c_str());
+
+    os << "I0";
+    key     = os.str();
+    os.str("");
+    os << I0;
+    value = os.str();
+    os.str("");
+
+    writeINI((char*)section.c_str(), (char*)key.c_str(), (char*)value.c_str(), (char*)fileName.c_str());
+
+    os << "CoeffMoteur";
+    key     = os.str();
+    os.str("");
+    os << CoeffMoteur;
+    value = os.str();
+    os.str("");
+
+    writeINI((char*)section.c_str(), (char*)key.c_str(), (char*)value.c_str(), (char*)fileName.c_str());
+
+    os << "Theta";
+    key     = os.str();
+    os.str("");
+    os << Theta;
+    value = os.str();
+    os.str("");
+
+    writeINI((char*)section.c_str(), (char*)key.c_str(), (char*)value.c_str(), (char*)fileName.c_str());
+
 
     return true;
Index: /BAORadio/libindi/libindi/communs/alignement.h
===================================================================
--- /BAORadio/libindi/libindi/communs/alignement.h	(revision 692)
+++ /BAORadio/libindi/libindi/communs/alignement.h	(revision 693)
@@ -96,8 +96,8 @@
 
     void   AfficherMatrice();
-    inline double Determinant();
+    double Determinant();
     
     void   InitParametresInstrument();
-    void   OptimisationGeometrieAntenne();
+    void   OptimisationGeometrieAntenne(bool Chercher);
     double Alt2Motor(double targetAlt);
      double Motor2Alt(double pas);
@@ -143,5 +143,4 @@
 
     double BC;                          //ParamÃštres de l'instrument
-    // Formule de Marc
     double CD;
     double ED;
Index: /BAORadio/libindi/libindi/communs/astro.cpp
===================================================================
--- /BAORadio/libindi/libindi/communs/astro.cpp	(revision 692)
+++ /BAORadio/libindi/libindi/communs/astro.cpp	(revision 693)
@@ -567,17 +567,17 @@
 ***************************************************************************************/
 
- void Astro::Azimut(double Ar, double De, double *azi, double *hau)
+void Astro::Azimut(double Ar, double De, double *azi, double *hau)
 {
     double ah = tsl - Ar;
-    
+
     double cosLatitude = cos(Latitude);
     double sinLatitude = sin(Latitude);
     double cosDe_cosAh = cos(De) * cos(ah);
     double sinDe       = sin(De);
-   
-    
+
+
     double zc = sinLatitude * sinDe + cosLatitude * cosDe_cosAh;
     double ht = atan(zc / sqrt((-zc * zc) + 1.0));
-    
+
     double cosHt       = cos(ht);
 
@@ -648,31 +648,50 @@
 ***************************************************************************************/
 
-void Astro::RechercheAzimutFinSuivi(double AD, double Dec, long int *azmin, long int *azmax)
+void Astro::RechercheAzimutFinSuivi(double AD, double Dec, int posazactuelle, int *azmin, int *azmax)
 {
     double az, ha;
-    double min =  10000.0;
-    double max = -10000.0;
+    int min =  30000;
+    int max = -30000;
+    int delta;
+    int codeuraz;
 
     CalculTSL();
+    
+    
+    posazactuelle = 0;
+    
+    // la recherche se fait pour les 12 prochaines heures (12 * 60 = 720)
 
     for (int i = 0; i < 720; i++)
     {
-        tsl += 1.0 / 60.0 / 24.0 * Pi2 ;
+        // calcul de l'azimut de l'objet i minutes plus tard
 
         Azimut( AD, Dec, &az, &ha);
-        
+	
+	if ( ha < HAUTMIN * Pidiv180 ) break;
+
         az = VerifAngle(az + Pi);
 
-        if ( az > max ) max = az;
-
-        if ( az < min ) min = az;
-
-        if ( ha < HAUTMIN * Pidiv180 || az > Pi2-0.01) break;
-    }
-
-    *azmin = (long int) Arrondi( min * (double)NBREPASCODEURSAZ / Pi2 ) -NBREPASCODEURSAZ;
-
-    *azmax = (long int) Arrondi( max * (double)NBREPASCODEURSAZ / Pi2 ) ;
-    
+        codeuraz = (int) Arrondi( az * (double)NBREPASCODEURSAZ / Pi2 );
+	
+	delta = codeuraz - posazactuelle;
+	
+	if ( delta >=  NBREPASCODEURSAZ / 2 ) delta -= NBREPASCODEURSAZ;
+
+        if ( delta <= -NBREPASCODEURSAZ / 2 ) delta += NBREPASCODEURSAZ;
+
+        posazactuelle += delta;
+
+        if ( posazactuelle < min) min = posazactuelle;
+
+        if ( posazactuelle > max) max = posazactuelle;       
+	
+	tsl += 1.0 / 60.0 / 24.0 * Pi2 ;
+    }
+
+    *azmin = min - 200;
+
+    *azmax = max + 200;
+
     CalculTSL();
 }
@@ -728,10 +747,10 @@
     return fmod(angle, Pi);
 }
-
+/*
 float  Astro::slaRange(float angle )
 {
     return fmodf(angle, Pi);
 }
-
+*/
 void Astro::slaRefro ( double zobs, double hm, double tdk, double pmb,
                        double rh, double wl, double phi, double tlr,
Index: /BAORadio/libindi/libindi/communs/astro.h
===================================================================
--- /BAORadio/libindi/libindi/communs/astro.h	(revision 692)
+++ /BAORadio/libindi/libindi/communs/astro.h	(revision 693)
@@ -54,5 +54,5 @@
     void   Azimut(double Ar, double De, double *azi, double *hau);
     void   AzHa2ADDe(double Az, double Ha, double *AD, double *Dec);
-    void   RechercheAzimutFinSuivi(double AD, double Dec, long int *azmin, long int *azmax);
+    void   RechercheAzimutFinSuivi(double AD, double Dec, int posazactuelle, int *azmin, int *azmax);
     void   Precession(double *ar, double *de);
     void   NutationEtoile(double *ar, double *de);
Index: /BAORadio/libindi/libindi/communs/const.h
===================================================================
--- /BAORadio/libindi/libindi/communs/const.h	(revision 692)
+++ /BAORadio/libindi/libindi/communs/const.h	(revision 693)
@@ -8,6 +8,6 @@
 //////////////////////////////////////////
 
-#define VERSION "0.61"
-#define VERSION_DATE "01/08/12"
+#define VERSION "0.62"
+#define VERSION_DATE "14/09/12"
 
 //#define ET_UT 0.0
@@ -173,5 +173,5 @@
 #define UPDATETRANSITDELAY ( 15.0 * 60.0 )
 
-//#define JOYSTICK
+#define JOYSTICK
 
 #define JOY_DEV "/dev/input/js0"
Index: /BAORadio/libindi/libindi/drivers/telescope/BAO.cpp
===================================================================
--- /BAORadio/libindi/libindi/drivers/telescope/BAO.cpp	(revision 692)
+++ /BAORadio/libindi/libindi/drivers/telescope/BAO.cpp	(revision 693)
@@ -130,4 +130,10 @@
     targetAlignmentIP     = -1;
 
+    // Ces deux variables dÃ©finissent un intervalle oÃ¹ l'azimut (exprimÃ©e en pas codeur)
+    // de l'object pointÃ© va Ã©voluer au cours du suivi...
+
+    azmincodeur = MINAZCODEURS;
+    azmaxcodeur = MAXAZCODEURS;
+
 
     // initialisation des sockets (Antennes)
@@ -229,6 +235,6 @@
         time ( &rawtime );
         timeinfo = localtime ( &rawtime );
-        strftime (buffer,80,"%c    ",timeinfo);
-        fprintf(pFile, buffer);
+        strftime (buffer, 80,"%c    ",timeinfo);
+        fprintf(pFile, "%s", buffer);
 
         // On sauvegarde le message dans le fichier log
@@ -604,5 +610,5 @@
         if (eqp == &CommandT[0])
         {
-            char chaine[100];
+            char chaine[1000];
 
             bool result = false;
@@ -616,5 +622,5 @@
                 for (int i = 1; i<=strlen(chaine); i++) chaine[i-1]=chaine[i];
 
-                IDLog(chaine);
+                IDLog("%s", chaine);
 
                 for (int i = 1; i<SocketsNumber; i++ )
@@ -646,4 +652,6 @@
             else if (chaine[0] == 'M')
             {
+                IDSetText(&CommandTP, "Calcul des matrices de correction\n" );
+
                 if  (Sockets[targetAlignmentIP].AlignementAntenne->nbrcorrections >=3 )
                 {
@@ -657,6 +665,4 @@
                     Sockets[targetAlignmentIP].AlignementAntenne->Matrice_ok = false;
                 }
-
-                IDSetText(&CommandTP, "Calcul des matrices de correction\n" );
             }
             else if (chaine[0] == 'O')
@@ -666,5 +672,11 @@
                 if (targetAlignmentIP != -1)
                 {
-                    Sockets[targetAlignmentIP].AlignementAntenne->OptimisationGeometrieAntenne();
+                    Sockets[targetAlignmentIP].AlignementAntenne->OptimisationGeometrieAntenne(true);
+
+                    IDSetSwitch(&AlignementOkP, "Les parametres de l alignement ont ete sauvegardes apres optimisation");
+
+                    Sockets[targetAlignmentIP].AlignementAntenne->EnregistrementParametresAlignement(
+                        Sockets[targetAlignmentIP].IP,
+                        "/home/" + (string)getenv("USER") + "/AlignementAntennes.cfg");
                 }
             }
@@ -785,8 +797,5 @@
                     }
 
-
-
-
-                    IDSetText(&CommandTP, os.str().c_str() );
+                    IDSetText(&CommandTP, "%s", os.str().c_str() );
 
                     return;
@@ -1503,5 +1512,5 @@
                         DHMS(targetDEC, false     ).c_str());
 
-            AfficherLog("ad1=%s de1=%s ad2=%s de2=%s\n",
+            AfficherLog("(ad1=%s de1=%s) -> (ad2=%s de2=%s)\n",
                         DHMS(ad  * N180divPi, true ).c_str(),
                         DHMS(de  * N180divPi, false).c_str(),
@@ -1722,4 +1731,5 @@
     Coord result, vect;
 
+    
     // Pour toutes les antennes connectÃ©es
 
@@ -1795,4 +1805,8 @@
                     newRA  = Sockets[i].AlignementAntenne->delta_ad[Sockets[i].AlignementAntenne->nbrcorrections];
                     newDEC = Sockets[i].AlignementAntenne->delta_de[Sockets[i].AlignementAntenne->nbrcorrections];
+		    
+		    // if newRA et newDEC = 0 -> on sort
+    
+                    if ( newRA == 0 && newDEC == 0) return;
 
                     AfficherLog("Alignement en cours.\n", true);
@@ -1933,9 +1947,9 @@
                 // On applique la formule de Marc pour convertir la hauteur en nombre de pas codeur alt
 
-                Sockets[i].TargetPosition.y = (long int) Arrondi( Sockets[i].AlignementAntenne->Alt2Motor( targetAlt ) );
+                Sockets[i].TargetPosition.y = (int) Arrondi( Sockets[i].AlignementAntenne->Alt2Motor( targetAlt ) );
 
                 //4000 pas pour 360Â° sur l'axe az
 
-                Sockets[i].TargetPosition.x = (long int) Arrondi( targetAz * (double)NBREPASCODEURSAZ / 360.0);
+                Sockets[i].TargetPosition.x = (int) Arrondi( targetAz * (double)NBREPASCODEURSAZ / 360.0);
 
                 // On ajoute les deltas en AZ et en HA pour la raquette hors procÃ©dure d'alignement
@@ -1952,22 +1966,36 @@
 
                 if ( azmincodeur < MINAZCODEURS ) {
+                    azmincodeur += NBREPASCODEURSAZ;
+                    azmaxcodeur += NBREPASCODEURSAZ;
+                    //  AutoriserTourComplet = true;
+                    AfficherLog("azmincodeur < MINAZCODEURS\n");
+                }
+
+                if ( azmaxcodeur > MAXAZCODEURS ) {
+                    azmincodeur -= NBREPASCODEURSAZ;
+                    azmaxcodeur -= NBREPASCODEURSAZ;
+                    // AutoriserTourComplet = true;
+                    AfficherLog("azmaxcodeur > MAXAZCODEURS\n");
+                }
+
+                AfficherLog("Intervalle autorise pour le suivi de l objet en azimut [%i..%i]\n", azmincodeur, azmaxcodeur );
+                AfficherLog("Position initiale en Az = %i\n", Sockets[i].TargetPosition.x);
+
+                if ( Sockets[i].TargetPosition.x < azmincodeur ) {
                     Sockets[i].TargetPosition.x += NBREPASCODEURSAZ;
                     AutoriserTourComplet = true;
-		     AfficherLog("test1\n");
-
+                    AfficherLog("TargetPosition.x < azmincodeur\n");
                 }
 
-                if ( azmaxcodeur > MAXAZCODEURS ) {
+                if ( Sockets[i].TargetPosition.x > azmaxcodeur ) {
                     Sockets[i].TargetPosition.x -= NBREPASCODEURSAZ;
                     AutoriserTourComplet = true;
-		    AfficherLog("test2\n");
-
+                    AfficherLog("TargetPosition.x > azmaxcodeur\n");
                 }
 
-                 if ( Sockets[i].TargetPosition.x < MINAZCODEURS ) {
+                if ( Sockets[i].TargetPosition.x < MINAZCODEURS ) {
                     Sockets[i].TargetPosition.x += NBREPASCODEURSAZ;
                     AutoriserTourComplet = true;
-		    AfficherLog("test3\n");
-
+                    AfficherLog("TargetPosition.x < MINAZCODEURS\n");
                 }
 
@@ -1975,13 +2003,16 @@
                     Sockets[i].TargetPosition.x -= NBREPASCODEURSAZ;
                     AutoriserTourComplet = true;
-		    AfficherLog("test4\n");
-
+                    AfficherLog("TargetPosition.x > MAXAZCODEURS\n");
                 }
 
+                if (fabs(Sockets[i].Pos.x - Sockets[i].TargetPosition.x) > MAXAZCODEURS / 2)
+                {
+                    AutoriserTourComplet = true;
+                    AfficherLog("| Pos.x - TargetPosition.x | > MAXAZCODEURS / 2\n");
+                }
+
                 // Message de debug
 
-                AfficherLog("Intervalle autorise pour le suivi de l objet [%i..%i]\n", azmincodeur, azmaxcodeur);
-
-                AfficherLog("Positions codeurs Az = %i  Alt = %i\n", Sockets[i].TargetPosition.x, Sockets[i].TargetPosition.y);
+                AfficherLog("Position finale :  Az = %i  Alt = %i\n", Sockets[i].TargetPosition.x, Sockets[i].TargetPosition.y);
             }
         }
@@ -2921,4 +2952,6 @@
 bool BAO::process_coords()
 {
+    int posaz = 0;
+
     switch (currentSet)
     {
@@ -2940,5 +2973,14 @@
         // les rotations inutiles
 
-        RechercheAzimutFinSuivi(targetRA * 15.0 * Pidiv180, targetDEC * Pidiv180, &azmincodeur, &azmaxcodeur);
+        for (int i=1; i<SocketsNumber; i++ )
+        {
+            if ((Sockets[i].Connected) && (Sockets[i].PosValides))
+            {
+                posaz = Sockets[i].Pos.x;
+                break;
+            }
+        }
+
+        RechercheAzimutFinSuivi(targetRA * 15.0 * Pidiv180, targetDEC * Pidiv180, posaz, &azmincodeur, &azmaxcodeur);
 
         // On prÃ©pare les antennes pour le prochain goto
@@ -2990,5 +3032,14 @@
         // les rotations inutiles
 
-        RechercheAzimutFinSuivi(targetRA * 15.0 * Pidiv180, targetDEC * Pidiv180, &azmincodeur, &azmaxcodeur);
+        for (int i=1; i<SocketsNumber; i++ )
+        {
+            if ((Sockets[i].Connected) && (Sockets[i].PosValides))
+            {
+                posaz = Sockets[i].Pos.x;
+                break;
+            }
+        }
+
+        RechercheAzimutFinSuivi(targetRA * 15.0 * Pidiv180, targetDEC * Pidiv180, posaz, &azmincodeur, &azmaxcodeur);
 
         InitAntennes();
@@ -3203,14 +3254,14 @@
 
     // ne pas faire des tours complets en Az pour rien...
-    
-     // Corrections sup pour rester dans l'intervalle [-1693.. 3867]
-
-     AfficherLog("deltaAz1=%i\n", deltaAz, true);
-	
+
+    // Corrections sup pour rester dans l'intervalle [-1693.. 3867]
+
+    AfficherLog("deltaAz1=%i\n", deltaAz, true);
+
     while (deltaAz > NBREPASCODEURSAZ) deltaAz -= NBREPASCODEURSAZ;
 
-   
+
     //TODO : a verifier en details
-  
+
     if ( !AutoriserTourComplet )
     {
@@ -3225,5 +3276,5 @@
         }
     }
-    
+
     AfficherLog("deltaAz2=%i\n", deltaAz, true);
 
Index: /BAORadio/libindi/libindi/drivers/telescope/BAO.h
===================================================================
--- /BAORadio/libindi/libindi/drivers/telescope/BAO.h	(revision 692)
+++ /BAORadio/libindi/libindi/drivers/telescope/BAO.h	(revision 693)
@@ -45,6 +45,6 @@
 struct Position
 {
-    long int x;
-    long int y;
+    int x;
+    int y;
 };
 
@@ -250,12 +250,12 @@
     BAO_STATUS  TrackingMode;            // Mode de suivi actuellement activÃ©
     
-    long int azmincodeur;
-    long int azmaxcodeur;  
+    int azmincodeur;
+    int azmaxcodeur;  
     
     int    targetAlignmentIP;
     
-    long int VitesseRaquette;
-    long int delta_az;
-    long int delta_ha;
+    int VitesseRaquette;
+    int delta_az;
+    int delta_ha;
     
    
