UR5/CB3 - Cannot assign a WayPoint to an existing Point, only create new ones

I had a working program at one point, but periodically I lost the ability to Rename Waypoints and at the same time or related to the same time, the ability to use a Defined Waypoint more than once without using a copy / paste. I had added a lot of reused moves using copy / paste at the pendant. This was in version 3.11… We also had very odd things happening with a palletization routine, and could only recover proper movement by creating a new one (same corner geographically and approach position). At one point, I found the dropdown list of waypoints to include the same point multiple times (see attached image). I also had instances where waypoints referenced in the program randomly renamed themselves to other waypoints, and upon moving to that position, it would be a completely different position. I had two instances of a waypoint that each went to different locations.

I incrementally upgraded from:
update-3.11.0.82155.urup
To
update-3.12.1.90940.urup
update-3.13.1.10297.urup
update-3.14.3.1031232.urup, and
update-3.15.8-build10.6.339.urup

Each time I fully rebooted and restarted per the guide and tested to make sure the basic features of my program worked, and didn’t notice a structural change in any code. Each time, I could not use a waypoint more than once, without cut and pasting the waypoint. When I got to update-3.15.8, A whole ton of Indexed (-1,-2,-3…) waypoints appeared, see attached picture. I have included a video here also.

I think some how cut and pasting waypoints cause a whole ton of reference errors in the compiled version of the program. I downloaded the simulator, and copied my program into the simulator, and the same thing happens in there.

I got frustrated, and deleted all my waypoints, suppressed all but the minimum code (to mask the missing waypoints in the Move Statements) and still have the same issue with inability to use a waypoint more than once (NOTE, these are FIXED waypoints, not sure about relative ones).

This sure seems to be a bug within the Pendant… Did my cut and pasting waypoints screw up some sort of tag tracking??

Program
Init Variables
BeforeStart
CurrentStartPos≔get_actual_tcp_pose()
TrayEmpty≔ True
Set DO0Ready=Off
Set DO1CmdFuncDone=Off
Set DO2GripperClose=Off
‘PauseEnable≔ True ’
PauseEnable≔ False
Call HomeSeq
Robot Program
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Set DO0Ready=On
Set DO1CmdFuncDone=Off
If DI6CmdStart≟ True
Set DO0Ready=Off
Switch CmdWord
Case 0
Wait: 0.01
Case 1
Wait: 0.01
Model50≔ True
Call PickTray
Call SeqDone
Case 2
Wait: 0.01
Model50≔ False
Call PickTray
Call SeqDone
Case 3
Wait: 0.01
Call PlaceM50AS
Call SeqDone
Case 4
Wait: 0.01
Call PlaceM34AS
Call SeqDone
Case 5
Wait: 0.01
Call PickM50AS
Call SeqDone
Case 6
Wait: 0.01
Call SeqDone
Case 7
Wait: 0.01
Call PickM34AS
Call SeqDone
Case 8
Wait: 0.01
Call PlaceM50TS1
Call SeqDone
Case 9
Wait: 0.01
Call PickM50TS1
Call SeqDone
Case 10
Wait: 0.01
Call SeqDone
Case 11
Wait: 0.01
Call SeqDone
Case 12
Wait: 0.01
Call PlaceBad
Call SeqDone
Case 13
Wait: 0.01
Call PlaceGood
Call SeqDone
Case 14
Wait: 0.01
Call SeqDone
Case 15
Wait: 0.01
Call SeqDone
Case 16
Wait: 0.01
Call SeqDone
Case 17
Wait: 0.01
Call SeqDone
Case 18
Wait: 0.01
Call SeqDone
Case 19
Wait: 0.01
Call SeqDone
Case 20
Wait: 0.01
Call SeqDone
Case 21
Wait: 0.01
Call SeqDone
Case 22
Wait: 0.01
Call SeqDone
Case 23
Wait: 0.01
Call SeqDone
Case 24
Wait: 0.01
Call SeqDone
Case 25
Wait: 0.01
Case 26
Wait: 0.01
Case 27
Wait: 0.01
PickTray
Wait: 0.01
If TrayCount≟0
TrayEmpty≔ True
If TrayEmpty≟ True
TrayStartPos≔’How many parts are done in this tray?’
TrayCount≔TrayStartPos
TrayEmpty≔ False
Set DO2GripperClose=Off
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Pallet
Pattern: Square
Corner1_1
Corner2_1
Corner3_1
Corner4_1
PalletSequence
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
PalletIndex
PalletIndexPos≔get_actual_tcp_pose()
If Model50≟ True
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
MoveL
M50RMovTrayPick
Else
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
MoveL
M34RMovTrayPick
If PauseEnable≟ True
Wait: 2.0
Set DO2GripperClose=On
Wait: 0.5
MoveL
PalletIndexPos
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Waypoint2
PlaceM50AS
MoveL
Wait DI0RunEnable=HI
If PauseEnable≟ True
Wait: 2.0
AssyReady
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Mod50PlaceAssy
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
RelMov25mmDwn
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Set DO2GripperClose=Off
Wait: 0.25
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
AssyReady1
PickM50AS
Wait DI0RunEnable=HI
Set DO2GripperClose=Off
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
AssyReady2
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
M50AssyPick
Set DO2GripperClose=On
Wait: 0.25
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Mod50PlaceAss1
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
AssyReady3
PlaceM50TS1
Set DO2GripperClose=On
Wait: 0.25
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
TS1Approach
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
TS1Ready1
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
RelMov25mmDwn1
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Set DO2GripperClose=Off
Wait: 0.25
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
TS1Approach1
PickM50TS1
MoveJ
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
TS1Approach2
Set DO2GripperClose=Off
Wait: 0.25
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
TS1Ready3
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
RelMov25mmDwn2
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Set DO2GripperClose=On
Wait: 0.25
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
TS1Ready2
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
TS1Approach3
PlaceM34AS
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
AssyReady4
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Mod34PlaceAssy
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
RelMov25mmDwn3
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Set DO2GripperClose=Off
Wait: 0.25
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
AssyReady5
PickM34AS
Set DO2GripperClose=Off
Wait: 0.25
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
AssyReady6
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Mod34AssyPick
Set DO2GripperClose=On
Wait: 0.25
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Waypoint1
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
AssyReady7
PlaceGood
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
TS1Approach4
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
GoodDropMidTrav
MoveL
Wait DI0RunEnable=HI
If PauseEnable≟ True
Wait: 2.0
GoodDrop
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Set DO2GripperClose=Off
Wait: 0.25
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
GoodDropMidTr1
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
TS1Approach5
PlaceBad
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
AssyReady8
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
BadDrop
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Set DO2GripperClose=Off
Wait: 0.25
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
AssyReady9
Wait: 0.01
HomeSeq
StartX≔CurrentStartPos[0]
StartY≔CurrentStartPos[1]
StartZ≔CurrentStartPos[2]
Set DO3Restart=Off
Wait: 0.5
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
CurrentStartPos
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
East70mm
Wait: 0.5
MoveL
If PauseEnable≟ True
Wait: 2.0
Wait DI0RunEnable=HI
Waypo
Set DO3Restart=On
SeqDone
Set DO1CmdFuncDone=On
Wait: 2.0
Wait DI6CmdStart=LO
Wait: 1.0
Thread_1
If DI1CmdFuncB0≟ True
B0≔1
Else
B0≔0
If DI2CmdFuncB1≟ True
B1≔2
Else
B1≔0
If DI3CmdFuncB2≟ True
B2≔4
Else
B2≔0
If DI4CmdFuncB3≟ True
B3≔8
Else
B3≔0
CmdWord≔B0+B1+B2+B3