Index: trunk/psLib/src/astronomy/psAstrometry.c
===================================================================
--- trunk/psLib/src/astronomy/psAstrometry.c	(revision 2052)
+++ trunk/psLib/src/astronomy/psAstrometry.c	(revision 2058)
@@ -8,6 +8,6 @@
  *  @author George Gusciora, MHPCC
  *
- *  @version $Revision: 1.34 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-10-12 19:10:00 $
+ *  @version $Revision: 1.35 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-10-12 20:53:02 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -24,4 +24,6 @@
 #include "psMemory.h"
 #include "psAbort.h"
+#include "psError.h"
+#include "psConstants.h"
 #include "slalib.h"
 
@@ -199,9 +201,9 @@
 {
     if (fp != NULL) {
-        for (int i = 0; i < fp->nX; i++) {
+        for (int i = 0; i < fp->p_ps_xRows; i++) {
             psFree(fp->x[i]);
         }
 
-        for (int j = 0; j < fp->nY; j++) {
+        for (int j = 0; j < fp->p_ps_yRows; j++) {
             psFree(fp->y[j]);
         }
@@ -221,4 +223,5 @@
  * XXX: Verify that you interpreted the SDR correctly.
  *
+ * XXX: This assumes that x,y must be of type F64
  */
 psFixedPattern* psFixedPatternAlloc(double x0,
@@ -233,27 +236,37 @@
     int j;
 
+    PS_CHECK_NULL_IMAGE_RETURN_NULL(x);
+    PS_CHECK_NULL_IMAGE_RETURN_NULL(y);
+    PS_CHECK_IMAGE_TYPE_RETURN_NULL(x, PS_TYPE_F64);
+    PS_CHECK_IMAGE_TYPE_RETURN_NULL(y, PS_TYPE_F64);
+
     tmp = (psFixedPattern *) psAlloc(sizeof(psFixedPattern));
-    tmp->nX = x->numCols;
-    tmp->nY = y->numRows;
+    // XXX: Is this correct?
+    tmp->nX = (x->numCols * x->numRows);
+    tmp->nY = (y->numCols * y->numRows);
     tmp->x0 = x0;
     tmp->y0 = y0;
     tmp->xScale = xScale;
     tmp->yScale = yScale;
-    tmp->x = (double **) psAlloc(x->numRows * sizeof(float *));
+    tmp->p_ps_xRows = x->numRows;
+    tmp->p_ps_xCols = x->numCols;
+    tmp->p_ps_yRows = y->numRows;
+    tmp->p_ps_yCols = y->numCols;
+    tmp->x = (double **) psAlloc(x->numRows * sizeof(double *));
     for (i=0;i<x->numRows;i++) {
-        (tmp->x)[i] = (double *) psAlloc(x->numCols * sizeof(float));
+        (tmp->x)[i] = (double *) psAlloc(x->numCols * sizeof(double));
     }
     for (i=0;i<x->numRows;i++) {
-        for (j=0;j<x->numRows;j++) {
+        for (j=0;j<x->numCols;j++) {
             (tmp->x)[i][j] = x->data.F64[i][j];
         }
     }
 
-    tmp->y = (double **) psAlloc(y->numRows * sizeof(float *));
+    tmp->y = (double **) psAlloc(y->numRows * sizeof(double *));
     for (i=0;i<y->numRows;i++) {
-        (tmp->y)[i] = (double *) psAlloc(y->numCols * sizeof(float));
+        (tmp->y)[i] = (double *) psAlloc(y->numCols * sizeof(double));
     }
     for (i=0;i<y->numRows;i++) {
-        for (j=0;j<y->numRows;j++) {
+        for (j=0;j<y->numCols;j++) {
             (tmp->y)[i][j] = y->data.F64[i][j];
         }
