Index: /trunk/archive/pslib/include/psAstrom.h
===================================================================
--- /trunk/archive/pslib/include/psAstrom.h	(revision 253)
+++ /trunk/archive/pslib/include/psAstrom.h	(revision 254)
@@ -61,4 +61,14 @@
 } psExposure;
 
+
+/** The fixed pattern residual offsets.  These are specified via a coarse grid of x and y offsets. */
+typedef struct {
+    int nX, nY;				//!< Number of elements in x and y
+    double x0, y0;			//!< Position of the lower-left corner of the grid on the focal plane
+    double xScale, yScale;		//!< Scale of the grid
+    double **x, **y;			//!< The grid of offsets in x and y
+} psFixedPattern;
+
+
 /** a Focal plane array: a collection of chips.  Not all chips in a camera need to be listed in an instance of
  *  psFPA.
@@ -72,6 +82,6 @@
     psDistortion *TPtoFP;		///< Transformation term from 
     psDistortion *FPtoTP;		///< Transformation term from 
+    psFixedPattern *pattern;		//!< Fixed pattern residual offsets
     psExposure *exp;                    ///< information about this exposure
-    psMatrix *dx, *dy;                  //!< Focal Plane fixed pattern residual offsets
     psPhotSystem colorPlus, colorMinus; ///< Colour reference
     float rmsX, rmsY;                   //!< Dispersion in astrometric solution
@@ -88,23 +98,32 @@
     psMetaDataSet *md;			///< Chip-level metadata
     psCoordXform *chipToFPA;            ///< Transformations from chip coordinates to FPA coordinates
-    psCoordXform *FPAtoChip;            ///< Transformations from chip coordinates to FPA coordinates
+    psCoordXform *FPAtoChip;		//!< Transformations from FPA coordinates to chip
 
     struct psFPA *parentFPA;		///< FPA which contains this chip
 } psChip;
 
-/** a Cell: a collection of pixels.
- */
-typedef struct {
-    int nImage;				///< number of images in this cell realization
+/** a Cell: a collection of frames.
+ */
+typedef struct {
+    int nFrames;			///< number of frames in this cell realization; each may have its own
+					///< image, objects and overscan.
+    struct psFrame *frames;		//!< Frames from the cell
+    psMetaDataSet *md;			///< Cell-level metadata
+
+    psCoordXform *cellToChip;		///< Transformations from cell coordinates to chip coordinates
+    psCoordXform *cellToFPA;		///< Transformations from cell coordinates to FPA coordinates
+
+    struct psChip  *parentChip;		///< chip which contains this cell
+} psCell;
+
+/** a Frame: a collection of pixels */
+typedef struct {
+    int x0, y0;				//!< Offset from the lower-left corner
     psImage *image;                     ///< imaging area of cell 
     psDlist *objects;			///< objects derived from cell
     psImage *overscan;                  ///< bias region (subimage) of cell
-    psMetaDataSet *md;			///< Cell-level metadata
-
-    psCoordXform *cellToChip;		///< Transformations from cell coordinates to chip coordinates
-    psCoordXform *cellToFPA;		///< Transformations from cell coordinates to FPA coordinates
-
-    struct psChip  *parentChip;		///< chip which contains this cell
-} psCell;
+    psMetaDataSet *md;			//!< Frame-level metadata
+} psFrame;
+    
 
 /*** Functions ***********************************************************************/
