Index: trunk/psModules/src/camera/pmFPAfileFitsIO.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfileFitsIO.c	(revision 11255)
+++ trunk/psModules/src/camera/pmFPAfileFitsIO.c	(revision 11339)
@@ -18,10 +18,11 @@
 #include "pmFPACopy.h"
 
-pmFPA *pmFPAfileSuitableFPA(const pmFPAfile *file, const pmFPAview *view)
+pmFPA *pmFPAfileSuitableFPA(const pmFPAfile *file, const pmFPAview *view, const pmConfig *config)
 {
     PS_ASSERT_PTR_NON_NULL(file, NULL);
     PS_ASSERT_PTR_NON_NULL(view, NULL);
 
-    if (!file->format) {
+    if (file->camera == config->camera || // Need to mosaic, not copy
+            !file->format) {                // Working with the same output format as input format
         return psMemIncrRefCounter(file->fpa);
     }
@@ -225,4 +226,5 @@
 static bool fpaViewWriteFitsImage(const pmFPAview *view, // FPA view, specifying the level of interest
                                   pmFPAfile *file, // FPA file of interest
+                                  const pmConfig *config, // Configuration
                                   bool (*fpaWriteFunc)(pmFPA*, psFits*, psDB*, bool, bool), // Func for FPA
                                   bool (*chipWriteFunc)(pmChip*, psFits*, psDB*, bool, bool), // Func for chip
@@ -236,5 +238,5 @@
     PS_ASSERT_PTR_NON_NULL(fits, false);
 
-    pmFPA *fpa = pmFPAfileSuitableFPA(file, view); // FPA to write
+    pmFPA *fpa = pmFPAfileSuitableFPA(file, view, config); // FPA to write
 
     switch (pmFPAviewLevel(view)) {
@@ -284,23 +286,23 @@
 }
 
-bool pmFPAviewWriteFitsImage(const pmFPAview *view, pmFPAfile *file)
-{
-    PS_ASSERT_PTR_NON_NULL(view, false);
-    PS_ASSERT_PTR_NON_NULL(file, false);
-    return fpaViewWriteFitsImage(view, file, pmFPAWrite, pmChipWrite, pmCellWrite);
-}
-
-bool pmFPAviewWriteFitsMask(const pmFPAview *view, pmFPAfile *file)
-{
-    PS_ASSERT_PTR_NON_NULL(view, false);
-    PS_ASSERT_PTR_NON_NULL(file, false);
-    return fpaViewWriteFitsImage(view, file, pmFPAWriteMask, pmChipWriteMask, pmCellWriteMask);
-}
-
-bool pmFPAviewWriteFitsWeight(const pmFPAview *view, pmFPAfile *file)
-{
-    PS_ASSERT_PTR_NON_NULL(view, false);
-    PS_ASSERT_PTR_NON_NULL(file, false);
-    return fpaViewWriteFitsImage(view, file, pmFPAWriteWeight, pmChipWriteWeight, pmCellWriteWeight);
+bool pmFPAviewWriteFitsImage(const pmFPAview *view, pmFPAfile *file, pmConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    return fpaViewWriteFitsImage(view, file, config, pmFPAWrite, pmChipWrite, pmCellWrite);
+}
+
+bool pmFPAviewWriteFitsMask(const pmFPAview *view, pmFPAfile *file, pmConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    return fpaViewWriteFitsImage(view, file, config, pmFPAWriteMask, pmChipWriteMask, pmCellWriteMask);
+}
+
+bool pmFPAviewWriteFitsWeight(const pmFPAview *view, pmFPAfile *file, pmConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    return fpaViewWriteFitsImage(view, file, config, pmFPAWriteWeight, pmChipWriteWeight, pmCellWriteWeight);
 }
 
