Index: trunk/psModules/src/camera/pmFPAfileFitsIO.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfileFitsIO.c	(revision 11332)
+++ 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);
 }
 
Index: trunk/psModules/src/camera/pmFPAfileFitsIO.h
===================================================================
--- trunk/psModules/src/camera/pmFPAfileFitsIO.h	(revision 11332)
+++ trunk/psModules/src/camera/pmFPAfileFitsIO.h	(revision 11339)
@@ -5,6 +5,6 @@
  * @author PAP, IfA
  *
- * @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-01-24 03:11:19 $
+ * @version $Revision: 1.6 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-01-27 03:33:37 $
  * Copyright 2004-2005 Institute for Astronomy, University of Hawaii
  */
@@ -32,15 +32,18 @@
 /// Write the image for the specified view
 bool pmFPAviewWriteFitsImage(const pmFPAview *view, ///< View specifying level of interest
-                             pmFPAfile *file ///< FPA file to write
+                             pmFPAfile *file, ///< FPA file to write
+                             pmConfig *config ///< Configuration
                             );
 
 /// Write the mask for the specified view
 bool pmFPAviewWriteFitsMask(const pmFPAview *view, ///< View specifying level of interest
-                            pmFPAfile *file ///< FPA file to write
+                            pmFPAfile *file, ///< FPA file to write
+                            pmConfig *config ///< Configuration
                            );
 
 /// Write the weight map for the specified view
 bool pmFPAviewWriteFitsWeight(const pmFPAview *view, ///< View specifying level of interest
-                              pmFPAfile *file ///< FPA file to write
+                              pmFPAfile *file, ///< FPA file to write
+                              pmConfig *config ///< Configuration
                              );
 
@@ -64,7 +67,11 @@
 /// Produce a suitable FPA for writing, on the basis of the input FPAfile
 ///
-/// A format change is done is required.  Otherwise the file->fpa is returned (incremented).
+/// A new FPA with a changed format is generated if required (file->format is set and file->camera is equal to
+/// the default, indicating a change in the format without changing the camera --- changes to the camera are
+/// handled using other systems --- see pmFPAfileDefineChipMosaic, pmFPAfileDefineFPAMosaic).  Otherwise the
+/// file->fpa is returned (incremented).
 pmFPA *pmFPAfileSuitableFPA(const pmFPAfile *file,///< File containing the fpa
-                            const pmFPAview *view ///< View at which to produce the fpa
+                            const pmFPAview *view, ///< View at which to produce the fpa
+                            const pmConfig *config ///< Configuration
                            );
 
Index: trunk/psModules/src/camera/pmFPAfileIO.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfileIO.c	(revision 11332)
+++ trunk/psModules/src/camera/pmFPAfileIO.c	(revision 11339)
@@ -109,5 +109,5 @@
     if (file->mode == PM_FPA_MODE_WRITE) {
         // Want to write out any potential blank
-        pmFPA *fpa = pmFPAfileSuitableFPA(file, view);
+        pmFPA *fpa = pmFPAfileSuitableFPA(file, view, config);
 
         switch (file->fileLevel) {
@@ -510,17 +510,17 @@
     switch (file->type) {
     case PM_FPA_FILE_IMAGE:
-        pmFPAviewWriteFitsImage(view, file);
+        pmFPAviewWriteFitsImage(view, file, config);
         psTrace ("pmFPAfile", 5, "wrote image %s (fpa: %p)\n", file->filename, file->fpa);
         break;
     case PM_FPA_FILE_MASK:
-        pmFPAviewWriteFitsMask(view, file);
+        pmFPAviewWriteFitsMask(view, file, config);
         psTrace ("pmFPAfile", 5, "wrote mask %s (fpa: %p)\n", file->filename, file->fpa);
         break;
     case PM_FPA_FILE_WEIGHT:
-        pmFPAviewWriteFitsWeight(view, file);
+        pmFPAviewWriteFitsWeight(view, file, config);
         psTrace ("pmFPAfile", 5, "wrote weight %s (fpa: %p)\n", file->filename, file->fpa);
         break;
     case PM_FPA_FILE_FRINGE:
-        pmFPAviewWriteFitsImage (view, file);
+        pmFPAviewWriteFitsImage (view, file, config);
         psTrace ("pmFPAfile", 5, "wrote image %s (fpa: %p)\n", file->filename, file->fpa);
         pmFPAviewWriteFitsTable(view, file, "FRINGE");
