diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2022-01-04  John D. Ramsdell  <ramsdell@mitre.org>
+
+	* cpsa.cabal (Version): Tagged as 3.6.9
+
+2021-12-08  John D. Ramsdell  <ramsdell@mitre.org>
+
+	* src/CPSA/Lib/Strand.hs (origUgenDiffStrand): Expunge skeletons
+	that have a value that is both uniq orig and uniq gen, and start
+	on different strands.
+
 2021-11-12  John D. Ramsdell  <ramsdell@mitre.org>
 
 	* cpsa.cabal (Version): Tagged as 3.6.8
diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,10 @@
 CPSA NEWS
 
+  January 2022:
+
+* Release 3.6.9 expunges skeletons that have a value that is both uniq
+  orig and uniq gen, and start on different strands.
+
   November 2021:
 
 * Release 3.6.8 adds a stronger method for solving Diffie-Hellman
@@ -163,4 +168,3 @@
 * New, improved documentation.  Included with the release is the CPSA
   manual which thoroughly documents the new and existing features of
   the tool and is also a good starting place for new users.
-
diff --git a/cpsa.cabal b/cpsa.cabal
--- a/cpsa.cabal
+++ b/cpsa.cabal
@@ -1,5 +1,5 @@
 Name:                   cpsa
-Version:                3.6.8
+Version:                3.6.9
 Maintainer:             mliskov@mitre.org
 Cabal-Version:          >= 1.10
 License:                BSD3
diff --git a/src/CPSA/Lib/Strand.hs b/src/CPSA/Lib/Strand.hs
--- a/src/CPSA/Lib/Strand.hs
+++ b/src/CPSA/Lib/Strand.hs
@@ -2400,11 +2400,24 @@
                               ((c,d) /= (a,b)) && ((c,d) /= (b,a))) rest)))
 
 -- Determine if a given PRS has a multiple origination of a
--- non-numeric fresh value.
-hasMultipleOrig :: PRS t p g s e c -> Bool
+-- non-numeric fresh value.  Also when a value is both uniq
+-- orig and uniq gen, check to see if they start on different strands.
+hasMultipleOrig :: Algebra t p g s e c => PRS t p g s e c -> Bool
 hasMultipleOrig prs =
   any (\(_, l) -> length l > 1) (korig (skel prs)) ||
-  any (\(_, l) -> length l > 1) (kugen (skel prs))
+  any (\(_, l) -> length l > 1) (kugen (skel prs)) ||
+  origUgenDiffStrand (korig (skel prs)) (kugen (skel prs))
+
+-- When a value is both uniq orig and uniq gen, check to see if they
+-- start on different strands.
+origUgenDiffStrand :: Algebra t p g s e c => [(t, [Node])] ->
+                      [(t, [Node])] -> Bool
+origUgenDiffStrand _ [] = False
+origUgenDiffStrand orig ((t, ns) : ugen) =
+  case lookup t orig of
+    Nothing -> origUgenDiffStrand orig ugen
+    Just ns' -> any f ns || origUgenDiffStrand orig ugen
+      where f (s, _) = any (\(s', _) -> s /= s') ns'
 
 checkOrigs :: Algebra t p g s e c => Gist t g ->
               Gist t g -> (g, e) -> [Sid] -> Bool
