Index: trunk/SophyaExt/XAstroPack/xastropack.cc
===================================================================
--- trunk/SophyaExt/XAstroPack/xastropack.cc	(revision 1511)
+++ trunk/SophyaExt/XAstroPack/xastropack.cc	(revision 1515)
@@ -7,7 +7,7 @@
 //        mois [1,12] (mn)
 //        annee       (yr)
-//        universal time [0,23[ (utc)
-//        Greenwich mean siderial [0,23[ (gst)
-//        Greenwich mean siderial at 0h UT [0,23[ (gst0)
+//        universal time [0,24[ (utc)
+//        Greenwich mean siderial [0,24[ (gst)
+//        Greenwich mean siderial at 0h UT [0,24[ (gst0)
 // EQUATORIALE: ascension droite en heures [0,24[ (ra)
 //              declinaison en degres [-90,90]    (dec)
@@ -15,13 +15,13 @@
 // GALACTIQUE: longitude en degres [0,360[  (glng)
 //             latitude en degres [-90,90]  (glat)
-// HORIZONTAL: altitude en degres [-90,90] (alt)
-//             azimuth en degres [0,360[   (az)
-//               (angle round to the east from north+)
-// ECLIPTIQUE: latitude ecliptique en degres [-90,90] (eclat)
-//             lontitude ecliptique en degres [0,360[ (eclng)
-//               (angle round counter clockwise from the vernal equinoxe)
-// GEOGRAPHIE: latitude en degres [-90,90] (north>0) (geolat)
-//             longitude en degres ]-180,180]        (geolng)
-//               (angle + vers l'ouest, - vers l'est)
+// HORIZONTAL: azimuth en degres [0,360[   (az)
+//                 (angle round to the east from north+)
+//             altitude en degres [-90,90] (alt)
+// ECLIPTIQUE: lontitude ecliptique en degres [0,360[ (eclng)
+//                 (angle round counter clockwise from the vernal equinoxe)
+//             latitude ecliptique en degres [-90,90] (eclat)
+// GEOGRAPHIE: longitude en degres ]-180,180]        (geolng)
+//                 (angle + vers l'ouest, - vers l'est)
+//             latitude en degres [-90,90] (north>0) (geolat)
 
 double TrueJDfrMJD(double mjd)
@@ -309,2 +309,47 @@
   PlanetPos(mjd,SATURN,ecl,ecb,diamang);
 }
+
+/* Given a coordinate type "typ", convert to standard for astropack */
+int  CoordConvertToStd(TypAstroCoord typ,double& coord1,double& coord2)
+// Return : 0 = OK
+//          1 = Type de coordonnees non connu
+//          2 = Mauvais range pour coord1
+//          4 = Mauvais range pour coord2
+//          6 = Mauvais range pour coord1 et coord2
+{
+  int rc = 0;
+
+  // ---- Equatoriales alpha,delta
+  //    - standard = [0,24[ , [-90,90]
+  if(typ&TypCoordEq) {
+    if(typ&TypCoordDD) {
+      coord1 = coord1 / 180. * 12.;
+    } else if(typ&TypCoordRR) {
+      coord1 = coord1 / PI * 12.;
+      coord2 = coord2 / PI * 180.;
+    }
+    if(coord1==24.) coord1 = 0.;
+    if(coord1<0.   || coord1>=24.) rc+= 2;
+    if(coord2<-90. || coord2>90. ) rc+= 4;
+
+  // ---- Galactiques gLong, gLat
+  // ---- Horizontales azimuth,altitude
+  // ---- Ecliptiques EclLong,EclLat
+  //    - standard = [0,360[ , [-90,90]
+  } else if( typ&TypCoordGal || typ&TypCoordHor || typ&TypCoordEcl) {
+    if(typ&TypCoordHD) {
+      coord1 = coord1 / 12. * 180.;
+    } else if(typ&TypCoordRR) {
+      coord1 = coord1 / PI * 180.;
+      coord2 = coord2 / PI * 180.;
+    }
+    if(coord1==360.) coord1 = 0.;
+    if(coord1<0.   || coord1>=360.) rc+= 2;
+    if(coord2<-90. || coord2>90. )  rc+= 4;
+
+  } else {          // Coordonnees non-connues
+    rc= 1;
+  }
+
+  return rc;
+}
Index: trunk/SophyaExt/XAstroPack/xastropack.h
===================================================================
--- trunk/SophyaExt/XAstroPack/xastropack.h	(revision 1511)
+++ trunk/SophyaExt/XAstroPack/xastropack.h	(revision 1515)
@@ -14,4 +14,28 @@
 }             /* extern "C" */
 #endif
+
+enum TypAstroCoord {
+  TypCoordUndef  =  (unsigned long)  (0),
+
+  // Pour indiquer que les coordonnees sont en (heure=[0,24[,degre=[-90,90])
+  TypCoordHD     =  (unsigned long)  (1 << 20),
+  // Pour indiquer que les coordonnees sont en (degre=[0,360[,degre=[-90,90])
+  TypCoordDD     =  (unsigned long)  (1 << 21),
+  // Pour indiquer que les coordonnees sont en (radian=[0,2Pi[,radian=[-Pi/2,Pi/2])
+  TypCoordRR     =  (unsigned long)  (1 << 22),
+
+  // Coordonnees Equatoriales alpha,delta
+  TypCoordEq     =  (unsigned long)  (1 << 0),
+  TypCoordEqStd  =  (unsigned long) ((1 << 0) | (1 << 20)),
+  // Coordonnees Galactiques gLong, gLat
+  TypCoordGal    =  (unsigned long)  (1 << 1),
+  TypCoordGalStd =  (unsigned long) ((1 << 1) | (1 << 21)),
+  // Coordonnees Horizontales azimuth,altitude
+  TypCoordHor    =  (unsigned long)  (1 << 2),
+  TypCoordHorStd =  (unsigned long) ((1 << 2) | (1 << 21)),
+  // Coordonnees Ecliptiques EclLong,EclLat
+  TypCoordEcl    =  (unsigned long)  (1 << 3),
+  TypCoordEclStd =  (unsigned long) ((1 << 3) | (1 << 21))
+};
 
 double TrueJDfrMJD(double mjd);
@@ -43,4 +67,5 @@
 void JupiterPos(double mjd,double *ecl,double *ecb,double *diamang);
 void SaturnPos(double mjd,double *ecl,double *ecb,double *diamang);
+int  CoordConvertToStd(TypAstroCoord typ,double& coord1,double& coord2);
 
 #endif
