Index: /branches/cname-collision/t/cname.t
===================================================================
--- /branches/cname-collision/t/cname.t	(revision 993)
+++ /branches/cname-collision/t/cname.t	(revision 994)
@@ -318,4 +318,21 @@
       }
     };
+    subtest 'collision with expired record' => sub {
+      $newname = 'expires-at5.expiry2.test';
+      ($code, $msg) = $dnsdb->addRec('n', 'n', 5, \$newname, \$rectype, \$newval, 900, undef, 't', $expirystamp);
+      ok( $code eq 'OK', "addRec() claimed success" );
+      if ($code eq 'OK') {
+        # crosscheck in the DB
+        ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 5 AND host = '$newname'");
+        ok( $rcount == 2, " ... [$rcount] correct number of records for $newname" );
+        my ($newstamp) = $dbh->selectrow_array("SELECT extract(epoch from stamp) FROM records WHERE domain_id = 5 AND host = '$newname' ".
+		"AND stampactive = 't' AND expires = 't' AND stamp >= now()");
+        my ($oldstamp) = $dbh->selectrow_array("SELECT extract(epoch from stamp) FROM records WHERE domain_id = 5 AND host = '$newname' ".
+		"AND stampactive = 't' AND expires = 't' AND stamp <= now()");
+        ok( $newstamp > $oldstamp, " ... added record expires after existing, already-expired record" );
+      } else {
+        print "not ok: $msg";
+      }
+    };
   }; # add expiring CNAME
 
Index: /branches/cname-collision/t/dns-unitbase.sql
===================================================================
--- /branches/cname-collision/t/dns-unitbase.sql	(revision 993)
+++ /branches/cname-collision/t/dns-unitbase.sql	(revision 994)
@@ -658,5 +658,5 @@
 3	example.net	1		1	2025121800	D	f	ab
 4	expiry1.test	1		1	2026011400	D	t	
-5	expiry2.test	1		1	2026011503	D	t	
+5	expiry2.test	1		1	2026011600	D	t	
 \.
 
@@ -778,4 +778,5 @@
 70	5	1	1	admin	Initial User	Added record 'expires-at3.expiry2.test TXT active after pending expiry', TTL 5400, expires at 2026-01-15 18:00	2026-01-15 13:21:31.833257-05	0	0
 71	5	1	1	admin	Initial User	Added record 'expires-at4.expiry2.test TXT active before pending expiry', TTL 5400, expires at 2026-01-15 18:00	2026-01-15 17:59:01.61806-05	0	0
+72	5	1	1	admin	Initial User	Added record 'expires-at5.expiry2.test TXT expired before now', TTL 5400, expires at 2026-01-15 18:00	2026-01-16 11:50:43.678446-05	0	0
 \.
 
@@ -785,5 +786,5 @@
 --
 
-SELECT pg_catalog.setval('public.log_log_id_seq', 71, true);
+SELECT pg_catalog.setval('public.log_log_id_seq', 72, true);
 
 
@@ -887,4 +888,5 @@
 5	60	expires-at3.expiry2.test	16	active after pending expiry	0	0	0	5400	\N	0		2026-01-15 18:00:00-05	f	t	\N
 5	61	expires-at4.expiry2.test	16	active before pending expiry	0	0	0	5400	\N	0		2026-01-15 18:00:00-05	f	t	\N
+5	62	expires-at5.expiry2.test	16	expired before now	0	0	0	5400	\N	0		2026-01-15 18:00:00-05	t	t	\N
 \.
 
@@ -894,5 +896,5 @@
 --
 
-SELECT pg_catalog.setval('public.records_record_id_seq', 61, true);
+SELECT pg_catalog.setval('public.records_record_id_seq', 62, true);
 
 
Index: /branches/cname-collision/t/test-cname-timestamps.sql
===================================================================
--- /branches/cname-collision/t/test-cname-timestamps.sql	(revision 993)
+++ /branches/cname-collision/t/test-cname-timestamps.sql	(revision 994)
@@ -11,2 +11,3 @@
 UPDATE records SET stamp = date_trunc('day', now() + interval '4 day') + '11:30' WHERE record_id = 60;
 UPDATE records SET stamp = date_trunc('day', now() + interval '2 day') + '11:30' WHERE record_id = 61;
+UPDATE records SET stamp = date_trunc('day', now() - interval '2 day') + '11:30' WHERE record_id = 62;
