Boolean return from ICurve.IsCircle seems strange

I was using ICurve.IsCircle as part of a VBA macro to select all circular edges in a sketch. I wanted to add all the circular edges to a collection so I could then parse through for all the full circles. I found (through Reddit questions and testing) that the return value is not truly boolean. It seems to return a 1/0 value instead of True/False. Strangely, it has no problem assigning the return value to a Boolean variable. However, an IF test of the value fails if attempting to use (Not True) in the IF test, even if testing against the Boolean variable assigned. To illustrate:

Dim isCurveCircular As Boolean

Dim i As Long

For i = LBound(vEdges) To UBound(vEdges)

 Dim swEdge As Edge
 Set swEdge = vEdges(i)
 Dim swCurve As Curve
 Set swCurve = swEdge.GetCurve()

 If swCurve Is Nothing Then GoTo NextEdge

 isCurveCircular = swCurve.IsCircle()

 'If Not isCurveCircular Then GoTo NextEdge
     'DOES NOT WORK for Circular Edges (ALWAYS executes GoTo)

 ‘If isCurveCircular <> 1 Then GoTo NextEdge
     'Works correctly - does not execute GoTo if curve IS circular

  If isCurveCircular = 0 Then GoTo NextEdge
     'Works correctly - executes GoTo if curve is NOT circular

This could have something to do with different definitions of booleans. Most booleans are integers underwater. Some systems define -1 as true, some define 1 as true. You can try casting a value to an integer to see which one it is.

In practice, I’ve seen “if boolean then” fail and “if boolean = true then” work well. It’s messy in VBA.