Index: /branches/pap_mops/ppMops/src/ppMopsMerge.c
===================================================================
--- /branches/pap_mops/ppMops/src/ppMopsMerge.c	(revision 25248)
+++ /branches/pap_mops/ppMops/src/ppMopsMerge.c	(revision 25249)
@@ -11,4 +11,9 @@
 #define LEAF_SIZE 4                     // Size of leaf
 #define MATCH_RADIUS SEC_TO_RAD(1.0)    // Matching radius
+#define MJD_TOL 1.0/3600.0/24.0         // Tolerance for MJD matching
+#define BORESIGHT_TOL SEC_TO_RAD(1.0)   // Tolerance for boresight matching
+#define EXPTIME_TOL 1.0e-3              // Tolerance for exposure time matching
+#define POSANGLE_TOL SEC_TO_RAD(1.0)    // Tolerance for position angle matching
+#define AIRMASS_TOL 1.0e-3              // Tolerance for airmass matching
 
 // Get distance from detection to centre of image
@@ -58,30 +63,30 @@
         }
 
-        if (merged->airmass != det->airmass) {
+        if (fabsf(merged->airmass - det->airmass) > AIRMASS_TOL) {
             psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Exposure airmass values differ: %f vs %f",
                     merged->airmass, det->airmass);
             return NULL;
         }
-        if (merged->exptime != det->exptime) {
+        if (fabsf(merged->exptime - det->exptime) > EXPTIME_TOL) {
             psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Exposure exposure time values differ: %f vs %f",
                     merged->exptime, det->exptime);
             return NULL;
         }
-        if (merged->posangle != det->posangle) {
+        if (fabs(merged->posangle - det->posangle) > POSANGLE_TOL) {
             psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Exposure position angle values differ: %f vs %f",
                     merged->posangle, det->posangle);
             return NULL;
         }
-        if (merged->alt != det->alt) {
+        if (fabs(merged->alt - det->alt) > BORESIGHT_TOL) {
             psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Exposure altitude values differ: %lf vs %lf",
                     merged->alt, det->alt);
             return NULL;
         }
-        if (merged->az != det->az) {
+        if (fabs(merged->az - det->az) > BORESIGHT_TOL) {
             psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Exposure azimuth values differ: %lf vs %lf",
                     merged->az, det->az);
             return NULL;
         }
-        if (merged->mjd != det->mjd) {
+        if (fabs(merged->mjd - det->mjd) > MJD_TOL) {
             psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Exposure MJD values differ: %lf vs %lf",
                     merged->mjd, det->mjd);
