diff --git a/src/pq/db_pq.c b/src/pq/db_pq.c
index 42ce3fa71..220ce9f94 100644
--- a/src/pq/db_pq.c
+++ b/src/pq/db_pq.c
@@ -113,7 +113,7 @@ TALER_PQ_exec_prepared (PGconn *db_conn,
           param_formats[off] = 1;
           off++;
           param_values[off] = (void *) amount->currency;
-          param_lengths[off] = strlen (amount->currency) + 1;
+          param_lengths[off] = strlen (amount->currency);
           param_formats[off] = 1;
           off++;
         }
@@ -136,7 +136,7 @@ TALER_PQ_exec_prepared (PGconn *db_conn,
           param_formats[off] = 1;
           off++;
           param_values[off] = (void *) amount->currency;
-          param_lengths[off] = strlen (amount->currency) + 1;
+          param_lengths[off] = strlen (amount->currency);
           param_formats[off] = 1;
           off++;
         }
diff --git a/src/pq/pq_helper.c b/src/pq/pq_helper.c
index 183bd43f2..5baab5a1c 100644
--- a/src/pq/pq_helper.c
+++ b/src/pq/pq_helper.c
@@ -138,7 +138,7 @@ TALER_PQ_RESULT_SPEC_AMOUNT_NBO (const char *name,
 				 struct TALER_AmountNBO *amount)
 {
   struct TALER_PQ_ResultSpec res = 
-    {TALER_PQ_RF_AMOUNT_NBO, (void *) (&amount), sizeof (amount), (name), NULL };
+    {TALER_PQ_RF_AMOUNT_NBO, (void *) (&amount), sizeof (*amount), (name), NULL };
   return res;
 }
 
diff --git a/src/pq/test_pq.c b/src/pq/test_pq.c
index 1672cc54c..dfae86125 100644
--- a/src/pq/test_pq.c
+++ b/src/pq/test_pq.c
@@ -118,6 +118,12 @@ run_queries (PGconn *conn)
   sig = GNUNET_CRYPTO_rsa_sign (priv,
 				msg,
 				sizeof (msg));
+  TALER_string_to_amount ("EUR:5.5",
+			  &hamount);
+  TALER_amount_hton (&namount,
+		     &hamount);		     
+  TALER_string_to_amount ("EUR:4.4",
+			  &hamount);
   {
     struct TALER_PQ_QueryParam params_insert[] = {
       TALER_PQ_QUERY_PARAM_RSA_PUBLIC_KEY (pub),
@@ -143,19 +149,68 @@ run_queries (PGconn *conn)
       TALER_PQ_RESULT_SPEC_END
     };
     
-    
+    fprintf (stderr,
+	     "Inserting\n");
     result = TALER_PQ_exec_prepared (conn,
 				     "test_insert",
 				     params_insert);
+    if (PGRES_COMMAND_OK != PQresultStatus (result))
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+		  "Database failure: %s\n",
+		  PQresultErrorMessage (result));
+      PQclear (result);
+      GNUNET_CRYPTO_rsa_signature_free (sig);
+      GNUNET_CRYPTO_rsa_private_key_free (priv);
+      GNUNET_CRYPTO_rsa_public_key_free (pub);
+      return 1;
+    }
+    
     PQclear (result);
+    fprintf (stderr,
+	     "Selecting\n");
     result = TALER_PQ_exec_prepared (conn,
 				     "test_select",
 				     params_select);
+    if (1 !=
+	PQntuples (result))
+    {
+      GNUNET_break (0);
+      PQclear (result);
+      GNUNET_CRYPTO_rsa_signature_free (sig);
+      GNUNET_CRYPTO_rsa_private_key_free (priv);
+      GNUNET_CRYPTO_rsa_public_key_free (pub);
+      return 1;
+    }
     ret = TALER_PQ_extract_result (result,
 				   results_select,
 				   0);
-    // FIXME: cmp results!
-    
+    GNUNET_break (GNUNET_YES == ret);
+    fprintf (stderr,
+	     "Verifying\n");
+    GNUNET_break (abs_time.abs_value_us == abs_time2.abs_value_us);
+    GNUNET_break (forever.abs_value_us == forever2.abs_value_us);
+    GNUNET_break (0 ==
+		  memcmp (&hc,
+			  &hc2,
+			  sizeof (struct GNUNET_HashCode)));
+    GNUNET_break (0 ==
+		  TALER_amount_cmp (&hamount,
+				    &hamount2));
+    TALER_string_to_amount ("EUR:5.5",
+			    &hamount);
+    TALER_amount_ntoh (&hamount2,
+		       &namount2);		         
+    GNUNET_break (0 ==
+		  TALER_amount_cmp (&hamount,
+				    &hamount2));
+    GNUNET_break (0 ==
+		  GNUNET_CRYPTO_rsa_signature_cmp (sig,
+						   sig2));
+    GNUNET_break (0 ==
+		  GNUNET_CRYPTO_rsa_public_key_cmp (pub,
+						    pub2));
+
     TALER_PQ_cleanup_result (results_select);
     PQclear (result);
   }